一、需求

基于NEO4J实现类似万方的高级检索功能 万方链接

二、创建索引

1、索引自动更新配置

// neo4j.conf设置此项会影响性能 开启自动更新索引(测试时数值类型字段在全文检索时无法索引)
apoc.autoIndex.enabled=true

2、执行带有索引自动更新配置的过程

CALL apoc.index.addAllNodes('FacebookID', {FacebookID:["CurrentCity","PoliticalViews","Gender"]},{autoUpdate:true});

三、查询索引

1、LUCENE查询语法

1、基础的查询语法,关键词查询:

   域名+“:”+搜索的关键字

   例如:content:java

2、范围查询

   域名+“:”+[最小值 TO 最大值]

   例如:size:[1 TO 1000]

   范围查询在lucene中支持数值类型,不支持字符串类型。在solr中支持字符串类型。

3、组合条件查询

 1)+条件1 +条件2:两个条件之间是并且的关系and

   例如:+filename:apache +content:apache

 2)+条件1 条件2:必须满足第一个条件,应该满足第二个条件

   例如:+filename:apache content:apache

 3)条件1 条件2:两个条件满足其一即可。

   例如:filename:apache content:apache

 4)-条件1 条件2:必须不满足条件1,要满足条件2

   例如:-filename:apache content:apache

4、组合条件查询

  条件1 AND 条件2 / 条件1 OR 条件2 / 条件1 NOT 条件2

5、模糊搜索* 相似搜索~

6、表达式分组

表示必须为男性,且括号中条件必须满足一个

例: +(FacebookID.locality:BeiJing FacebookID.ReligiousViews:Methodist) +FacebookID.Gender:男

Occur.MUST 查询条件必须满足,相当于and +(加号)
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

四、总结

1、多标签或者不指定标签检索,可以实现自定义过程将图库的属性字段直接建立索引而不指定标签,这样简化跨类型检索的查询。

2、为了支持中文分词全文索引,可以单独编写扩展插件以支持中文分词索引。这里是我实现的基于中文分词的全文索引过程(不包含索引自动更新)。NEO4J插件开发

原文地址:https://blog.csdn.net/superman_xxx/article/details/89376541

基于NEO4J的高级检索功能的更多相关文章

  1. JQuery实现高级检索功能

    https://blog.csdn.net/muziruoyi/article/details/44494465 < div id= "0" class ="row ...

  2. 设计基于HTML5的APP登录功能及安全调用接口的方式

    转自:http://blog.csdn.net/linlzk/article/details/45536065 最近发现群内大伙对用Hbuilder做的APP怎么做登录功能以及维护登录状态非常困惑,而 ...

  3. NetCore基于EasyNetQ的高级API使用RabbitMq

    一.消息队列 消息队列作为分布式系统中的重要组件,常用的有MSMQ,RabbitMq,Kafa,ActiveMQ,RocketMQ.至于各种消息队列的优缺点比较,在这里就不做扩展了,网上资源很多. 更 ...

  4. 设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)

    登录 保存密码 安全 加密 最近发现群内大伙对用Hbuilder做的APP怎么做登录功能以及维护登录状态非常困惑,而我前一段时间正好稍微研究了一下,所以把我知道的告诉大家,节约大家查找资料的时间. 你 ...

  5. Elasticsearch实现类Google高级检索

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247483914&idx=1&sn=436f814 ...

  6. 百度地图API 批量添加 带检索功能的信息窗口

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 基于纹理的图片检索及demo(未启动)

    基于纹理的图片检索及demo(未启动)

  8. 百度地图 Android SDK - 检索功能使用的简单演示样例

    百度地图 SDK 不仅为广大开发人员提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发人员提供了多种 LBS 检索的能力. 通过这些接口,开发人员能够轻松的訪问百度的 LBS 数据,丰富自己的移 ...

  9. DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样

    '近日有本论坛网友问:DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样 '今晚正好闲着没事,加之以前也没用到过这个需求,所以就写了个模拟功能,供各位坛友酌情参考. ...

随机推荐

  1. ES数据导入导出

    ES数据导入导出   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...

  2. Junit用断言对控制台输出进行测试

    核心思路: 在测试前,将标准输出定向到ByteArrayOutputStream中去 用输出流文件断言内容 测试完成,将标准输出修改为console 具体操作示例 基本通用复制粘贴操作 public ...

  3. java线程池和五种常用线程池的策略使用与解析

    java线程池和五种常用线程池策略使用与解析 一.线程池 关于为什么要使用线程池久不赘述了,首先看一下java中作为线程池Executor底层实现类的ThredPoolExecutor的构造函数 pu ...

  4. mysql的索引方法btree和hash的区别

    原文链接: http://www.91w.net/database/330.html 1. Hash索引: Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引 ...

  5. SetupFactory 许可协议设置

    我用的SetupFactory版本是9.1.0 没有汉化 一开始自己也不知道 百度发现有人在问同样的问题但是没解决 自己找了一会偶然发现 界面左侧 Screens->Before Install ...

  6. react-router踩坑

    1.当用BrowserRouter时,<Link/>组件必须放在BrowserRouter里,如果是存在于某个组件里的Link,则该组件也必须放在Router里,不然会出现url改变页面为 ...

  7. 在Nginx/Tengine服务器上安装证书

    可以从SSL证书服务控制台下载证书安装到Nginx/Tengine服务器上. 环境:以CentOS 7.Nginx 1.15.6为例. 证书名称以domain name为示例,如证书文件名称为doma ...

  8. linux指令【参考鸟哥的Linux私房菜】

    date指令  显示日期 cal指令 显示日历 bc  计算器  scale+number  显示几位小数  quit退出bc tab键  命令提示  入输入ca,按下tab键,会将所有ca的指令全部 ...

  9. 关于windows一些常用的快捷键使用说明

    犹由于经常使用linux和windows,所以有时候就会觉得windows一点需要点击好多下才能够完成的设定非常的麻烦,这里总结一些常用到的快捷键功能,会随着本小白的工作经验而添加. 1.ctrl+a ...

  10. 初始化css样式

    html,body,div,ul,li,ol,a,input,textarea,p,dl,dt,dd{margin:0;padding:0;} ul li{list-style: none;} a{t ...