一、需求

基于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. 17、javaWebService,的使用

    2. 实质上分三步操作: 创建一个服务器端(电力系统),和一个客户端(人员系统) 第一步:使用服务器端提供的接口,生成.wsdl文件 第二步:使用.wsdl文件,在电力系统中生成服务器端的代码 第三步 ...

  2. PHP面试 PHP基础知识 五(自定义函数和内部函数)

    自定义函数 变量的作用域和静态变量 变量的作用域:变量的作用域也成为变量的范围,变量的范围即它定义上的上下文背景(也就是它生效的范围). 大部分的PHP变量只有一个单独的范围.这个单独的范围跨度同样包 ...

  3. mvc 前台传入后台

    转自:http://blog.csdn.net/huangyezi/article/details/45274553 一个很简单的分部视图,Model使用的是列表,再来看看调用该分部视图的action ...

  4. jQuery 封装的ajax

    jquery封装的ajax 具体操作: $.get(url  [,data]  [,fn回调函数]   [, dataType]); data:给服务器传递的数据,请求字符串 .json对象 都可以设 ...

  5. PAT_A1103#Integer Factorization

    Source: PAT A1103 Integer Factorization (30 分) Description: The K−P factorization of a positive inte ...

  6. localStorage使用总结(转载)

    localStorage使用总结  本文转载自:https://www.cnblogs.com/st-leslie/p/5617130.html(点击标题可跳转至原文) 一.什么是localStora ...

  7. nginx配置跨域

    location / { if ($request_method = 'OPTIONS') {add_header 'Access-Control-Allow-Origin' '*' always;a ...

  8. 第二记 Java数据类型

    一.数据类型 java中数据类型分为基本数据与引用数据类型两大类,其中又有更细致的划分,下面以图展示 二.基本数据类型封装类 Java是一门面向对象的语言,但是在一些情况下基本数据类型无法满足Java ...

  9. C# String类常用操作

    1.string.Compare(s1,s2) 比较  按字母顺序后边的大于前边的 s1<s2 retrun -1 ;s1=s2 return 0; s1>s2 return1. Cons ...

  10. linux fcntl 对文件描述符控制

    linux fcntl 对文件描述符控制 linux fcntl 对文件描述符控制 linux fcntl 对文件描述符控制