一、需求
基于NEO4J实现类似万方的高级检索功能 万方链接
二、创建索引
1、索引自动更新配置
// neo4j.conf设置此项会影响性能 开启自动更新索引(测试时数值类型字段在全文检索时无法索引)
apoc.autoIndex.enabled=true
2、执行带有索引自动更新配置的过程
CALL apoc.index.addAllNodes('FacebookID', {FacebookID:["CurrentCity","PoliticalViews","Gender"]},{autoUpdate:true});
三、查询索引
1、LUCENE查询语法
Occur.SHOULD 查询条件可选,相当于or | 空(不用符号) |
Occur.MUST_NOT 查询条件不能满足,相当于not非 | -(减号) |
2、实现高级检索的核心:LUCENE QUERY语句拼接
// 必须为男性,括号内属性任意一个满足或者不满足都可以
CALL apoc.index.search("nodesProperties", "(FacebookID.CurrentCity:香港 FacebookID.PoliticalViews:XX党) +FacebookID.Gender:男 ",20) YIELD node RETURN node
// 必须不是男性,括号内属性任意有一个满足即可
CALL apoc.index.search("nodesProperties", "+(FacebookID.CurrentCity:香港 FacebookID.PoliticalViews:XX党) -FacebookID.Gender:男 ",20) YIELD node RETURN node
// 可以是男性,括号内属性没有一个满足
CALL apoc.index.search("nodesProperties", "-(FacebookID.CurrentCity:香港 FacebookID.PoliticalViews:XX党) FacebookID.Gender:男 ",20) YIELD node RETURN node
四、总结
原文地址:https://blog.csdn.net/superman_xxx/article/details/89376541