NEO4J中文分词全文索引自动更新解决方案_马超的博客的博客-CSDN博客


本站和网页 https://blog.csdn.net/superman_xxx/article/details/89486277 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

NEO4J中文分词全文索引自动更新解决方案_马超的博客的博客-CSDN博客
NEO4J中文分词全文索引自动更新解决方案
马超的博客
于 2019-04-24 09:34:28 发布
1336
收藏
分类专栏:
Neo4j
大数据应用
知识图谱
搜索引擎
文章标签:
neo4j
neo4j插件开发
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/superman_xxx/article/details/89486277
版权
Neo4j
同时被 3 个专栏收录
91 篇文章
6 订阅
订阅专栏
大数据应用
18 篇文章
0 订阅
订阅专栏
知识图谱
27 篇文章
3 订阅
订阅专栏
NEO4J中文分词全文索引自动更新解决方案
一、样例数据二、英文与中文全文索引差别1、创建NEO4J默认索引2、删除索引3、创建支持中文分词的索引
三、APOC自带英文全文索引过程(可自动更新索引)1、添加全文索引2、新增节点与属性3、检索
四、自定义中文分词全文索引插件(自动更新索引不成功)1、添加全文索引2、新增节点与属性3、检索
五、标签交叉检索六、自定义中文分词插件(自动更新索引失败单独更新节点索引)1、添加全文索引2、新增节点与属性并更新全文索引3、将2新增的节点或者更新的属性增加到索引4、检索
七、解决事务提交超时八、备注
使用NEO4J INDEX API实现自动更新失败,转换了一种思路解决这个问题(在更新节点或者新建节点的时候同步更新到对应的全文索引中。)
一、样例数据
样例数据格式参考
二、英文与中文全文索引差别
1、创建NEO4J默认索引
CALL apoc.index.addAllNodes('Loc', {Loc:["description","cause","year"]})
// 以下检索不成功:
CALL apoc.index.search('Loc', 'Loc.description:中文~') YIELD node RETURN node
CALL apoc.index.search('Loc', 'Loc.description:中文*') YIELD node RETURN node
CALL apoc.index.search('Loc', 'Loc.description:测试~') YIELD node RETURN node
CALL apoc.index.search('Loc', 'Loc.description:测试中文~') YIELD node RETURN node
2、删除索引
CALL apoc.index.remove('Loc')
3、创建支持中文分词的索引
CALL zdr.index.addChineseFulltextIndex('Loc', ["description","cause","year"], 'Loc') YIELD message RETURN message
// 以下检索成功:
CALL apoc.index.search('Loc', 'description:中文~') YIELD node RETURN node
CALL apoc.index.search('Loc', 'description:中文*') YIELD node RETURN node
CALL apoc.index.search('Loc', 'description:测试~') YIELD node RETURN node
CALL apoc.index.search('Loc', 'description:测试中文~') YIELD node RETURN node
三、APOC自带英文全文索引过程(可自动更新索引)
1、添加全文索引
CALL apoc.index.addAllNodes('Loc', {Loc:["description","cause","year"]},{autoUpdate:true})
2、新增节点与属性
CREATE (n:Loc {name:'V'}) SET n.description='测试中文分词,复联终章快上映了好激动,据说知识图谱与人工智能技术应用到了那部电影!',n.cause='测试英文分词,Mobile World Congress, the world’s largest gathering for the mobile industry, ' RETURN n
3、检索
可以支持索引的自动更新,但是对于中文的检索不友好,例如以下测试:
// 检索失败:
CALL apoc.index.search('Loc', 'Loc.cause:测试英文分词~') YIELD node RETURN node
CALL apoc.index.search('Loc', 'Loc.description:测试中文分词~') YIELD node RETURN node
// 检索成功:
CALL apoc.index.search('Loc', 'Loc.cause:测试英文分词*') YIELD node RETURN node
CALL apoc.index.search('Loc', 'Loc.description:测试中文分词*') YIELD node RETURN node
四、自定义中文分词全文索引插件(自动更新索引不成功)
addChineseFulltextAutoIndex过程为添加支持中文的全文索引过程,创建全文索引可以成功,但是对于节点的新增属性的更新,不支持自动更新。
1、添加全文索引
CALL zdr.index.addChineseFulltextAutoIndex('IKAnalyzer',["description","cause","year"],'Loc',{autoUpdate:'true'}) YIELD message RETURN message
2、新增节点与属性
CREATE (n:Loc {name:'V'}) SET n.description='测试中文分词,复联终章快上映了好激动,据说知识图谱与人工智能技术应用到了那部电影!',n.cause='测试英文分词,Mobile World Congress, the world’s largest gathering for the mobile industry, ' RETURN n
3、检索
添加全文检索之后就可以检索:
CALL zdr.index.chineseFulltextIndexSearch('IKAnalyzer', 'description:吖啶基氨基甲烷磺酰甲氧基苯胺', 100) YIELD node RETURN node
重新索引之后才能检索到:
CALL zdr.index.chineseFulltextIndexSearch('IKAnalyzer', 'description:测试~', 100) YIELD node RETURN node
五、标签交叉检索
addChineseFulltextAutoIndex/addChineseFulltextIndex支持多标签的同时检索,在建立索引时使用相同的索引名即可。 标签:Loc
CALL zdr.index.addChineseFulltextAutoIndex('Loc',["description","cause","name"],'Loc',{autoUpdate:'true'}) YIELD message RETURN message
标签:LocProvince’
CALL zdr.index.addChineseFulltextAutoIndex('Loc',["description","cause","name"],'LocProvince',{autoUpdate:'true'}) YIELD message RETURN message
检索节点:
CALL apoc.index.search('Loc', 'name:p~') YIELD node RETURN node
六、自定义中文分词插件(自动更新索引失败单独更新节点索引)
为了支持单节点的索引更新,开发以下过程。(三中所描述的自动更新方案失败,转为在更新节点或者新建节点的时候同步更新到对应的全文索引中。)
1、添加全文索引
CALL apoc.index.remove('Loc')
CALL zdr.index.addChineseFulltextIndex('Loc',["description","cause","year"],'Loc') YIELD message RETURN message
2、新增节点与属性并更新全文索引
CREATE (n:Loc {name:'V'}) SET n.description='测试中文分词,复联终章快上映了好激动,据说知识图谱与人工智能技术应用到了那部电影!',n.cause='测试英文分词,Mobile World Congress, the world’s largest gathering for the mobile industry, ' RETURN n
3、将2新增的节点或者更新的属性增加到索引
MATCH (n) WHERE n.name='V' WITH n CALL zdr.index.addNodeChineseFulltextIndex(n, ['description']) RETURN *
4、检索
CALL zdr.index.chineseFulltextIndexSearch('Loc', 'description:测试中文~') YIELD node RETURN node
七、解决事务提交超时
如果配置了事务提交超时设置,在构建索引时取消。
#********************************************************************
### Neo4j transcation timeout
###******************************************************************
#dbms.transaction.timeout=180s
使用后台脚本执行构建索引程序:
# index.sh
#!/usr/bin/env bash
nohup /neo4j-community-3.4.9/bin/neo4j-shell -file build.cql >>indexGraph.log 2>&1 &
// build.cql
CALL zdr.index.addChineseFulltextIndex('IKAnalyzer', ['description','fullname','name','lnkurl'], 'LinkedinID') YIELD message RETURN message;
八、备注
如果使用APOC自带的过程,设置自动更新配置之后即可,但是会影响性能。
apoc.autoIndex.enabled=true
// 构建示例
CALL apoc.index.addAllNodes('Loc', {Loc:["description","cause","year"]},{autoUpdate:true})
上述所有涉及到的NEO4J自定义过程参考
马超的博客
关注
关注
点赞
收藏
打赏
评论
NEO4J中文分词全文索引自动更新解决方案
NEO4J中文分词全文索引更新解决方案一、样例数据二、英文与中文全文索引差别1、创建NEO4J默认索引2、删除索引3、创建支持中文分词的索引三、APOC自带英文全文索引过程(可自动更新索引)1、添加全文索引2、新增节点与属性3、检索四、自定义中文分词全文索引插件(自动更新索引不成功)1、添加全文索引2、新增节点与属性3、检索五、标签交叉检索六、自定义中文分词插件(自动更新索引失败单独更新节点索引)...
复制链接
扫一扫
专栏目录
neo4j-lucene-index-1.7.1.zip
10-23
duration-format.zip,一个小的库,用于生成人类可读的时间长度字符串表示形式。用于生成人类可读的时间长度字符串表示形式的小库
neo4j 全文检索 (学习汇总整理)
QQ2856639881的专栏
05-03
679
neo4j使用存储过程实现全文索引和查询,内部是基于lucene
创建和配置全文索引 例如,对Label为Movie和Book的节点创建索引,索引的字段包括title和description。则采用如下cypher语句。
CALL db.index.fulltext.createNodeIndex
("titlesAndDescriptions",["Movie", "Book"],["title", "description"])
使用以上索引搜索标题或者描述中包含“matrix”的节点,.
参与评论
您还未登录,请先
登录
后发表或查看评论
自学笔记——利用python开展Neo4j图数据库知识图谱构建和统计分析
最新发布
qq_38268526的博客
09-30
497
利用python和neo4j,统计近6年与专业相关的社科基金,并构建知识图谱。
自定义中文全文索引
WGH100817的博客
08-22
34
自定义中文全文索引一、中文分词插件1、分词组件的调整2、分词测试二、样例数据准备三、通过中文全文分词组件创建节点索引四、中文...
使用Neo4j和简单分词算法实现菜品推荐系统
五哥的酒馆
04-26
974

背景:本推荐系统基于一款硬件产品--旺小宝桌牌。客人按下点餐按钮,扫码进入点餐界面,然后开始点自己喜欢的菜,在手机端下单。目前在成都已有近200家合作餐饮商家。

菜品推荐功能:
当客人在某商家使用桌牌点菜,提取该客人点菜的主材,当客人下一次在另外一家使用桌牌的商家点菜时,即为该客户推荐该商家对应主材的菜。
如:某客人在A店...
Neo4j之全文检索(一)
yangmeng1111的博客
04-12
1364
本篇文章我们开始谈谈Neo4j的全文检索功能,Neo4j的全文索引是基于Lucene实现的,但是Lucene默认情况下只提供了基于英文的分词器,下篇文章我们在讨论中文分词器(IK)的引用,本篇默认基于英文分词来做。我们前边文章就举例说明过,比如我要搜索苹果公司?首先我们要做的第一步在各个词条上创建全文索引,第二步我们根据苹果公司进行全文检索,把匹配度高的按顺序输出。下边我们一步步讲解怎么做。一、call和yield的用法首先看看这两个词的用方法。CALL语句用于调用数据库中的过程(Procedure),YI
Neo4j全文索引的使用
xiaqingyin的博客
04-16
2202
一、 简介
本博客针对Neo4j 3.5版本,原始内容请见官方文档:https://neo4j.com/docs/cypher-manual/3.5/schema/index/
Neo4j的全文索引采用Lucene,能够对neo4j中string类型的属性建立全文索引。
能够同时为node和relationship的属性建立索引。而neo4j内嵌的索引仅能够对node的属性建立索引。
...
Neo4j全文检索之中文分词器(二)
yangmeng1111的博客
04-14
433
在上篇文章中Neo4j之全文检索(一)介绍了全文索引的创建和如何全文搜索。理解起来也很简单。文章末尾留个了一个问题,如何创建中文的全文索引。其实用了这么久,我感觉用不用中文的全文索引影响不是很大,但是留了问题,我们就说说三种方式实现中文全文索引的创建。第一种:利用系统库里自带的过程函数我们在创建全文索引函数的时候是可以指定索引的分词器的,他的分词器可用下边的方式查询:call db.index.fulltext.listAvailableAnalyzers查到很多系统自带的分词器,其中有一个是“cjk”是针
neo4j自定义中文分词器
banrenshan的博客
06-18
404
新建maven项目
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.o
基于NEO4J的高级检索功能
马超的博客
04-18
3167
基于NEO4J的高级检索一、需求二、创建索引1、索引自动更新配置2、执行带有索引自动更新配置的过程三、查询索引1、LUCENE查询语法2、实现高级检索的核心:LUCENE QUERY语句拼接四、总结
一、需求
基于NEO4J实现类似万方的高级检索功能 万方链接
二、创建索引
1、索引自动更新配置
// neo4j.conf设置此项会影响性能 开启自动更新索引(测试时数值类型字段在全文检索时无法索...
从文本到知识:Neo4j 图数据库 + NLP (自然语言处理) 实现案例
GraphWay的博客
05-22
3043
我们现在处于“大数据时代”,而在浩繁的“大数据”中,绝大多数是文本形式的非结构化数据。图其实可以非常灵活和有效的表示和处理文本内容中的词语、概念、依存关系,并用作知识推理、情感分析、智能问答等丰富的应用中。
本文以百度云的自然语言处理API服务为例,介绍怎样将文本分析的结果保存到Neo4j图数据库中。
1、准备
Neo4j图数据库3.5.*。
APOC扩展包。关于如何安装APOC,请参见这里。我们要用到APOC中访问RESTful AP...
【Neo4j】踩坑大会-Neo4J用中文索引
雷雨中的双桅船
01-11
7187
正在用的Neo4j是当前最新版:3.1.0,各种踩坑。说一下如何在Neo4j 3.1.0中使用中文索引。选用了IKAnalyzer做分词器。
1. 首先参考文章:
https://segmentfault.com/a/1190000005665612
里面大致讲了用IKAnalyzer做索引的方式。但并不清晰,实际上,这篇文章的背景是用嵌入式Neo4j,即Neo4j一定要嵌入在你
Neo4j中实现自定义中文全文索引
weixin_33910385的博客
06-07
718
数据库检索效率时,一般首要优化途径是从索引入手,然后根据需求再考虑更复杂的负载均衡、读写分离和分布式水平/垂直分库/表等手段;索引通过信息冗余来提高检索效率,其以空间换时间并会降低数据写入的效率,因此对索引字段的选择非常重要。
Neo4j可对指定Label的Node Create Index,当新增/更新符合条件的Node属性时,Inde...
Neo4j全文检索
weixin_43086579的博客
02-19
1590
全文检索基本概念
搜索
搜索这个行为是用户与搜索引擎的一次交互过程,用户需要找一些数据,他提供给搜索引擎一些约束条件.搜索引擎通过约束条件抽取一些结果给用户
搜索引擎
搜索引擎存在的目的是存储,查找和获取数据.Neo4j用的搜索引擎是Lucene
文档
在搜索软件中,文档是一等公民.存储,搜索,显示都是以文档为核心.文档简单可以理解为数据库中的一行数据...
NEO4J亿级数据全文索引构建优化
马超的博客
04-24
2347
NEO4J亿级数据全文索引构建优化一、数据量规模(亿级)二、构建索引的方式三、构建索引发生的异常四、全文索引代码优化1、Java.lang.OutOfMemoryError2、访问数据库时3、优化方案4、优化代码5、执行效率测试
如果使用基于NEO4J的全文检索作为图谱的主要入口,那么做好图谱搜索引擎的优化是非常关键的。
一、数据量规模(亿级)
count(relationships):500...
NEO4J全文检索架构
马超的博客
04-24
1422
NEO4J全文检索架构一、有大量存量数据(亿级以上)(并长期有增量数据进入)二、无大量存量数据或者少量存量数据(或全部为增量数据)三、架构方案选择优先级
以下方案,是根据实践总结的基于NEO4J的全文检索解决方案,各有优缺点,仅供参考。以下总结全部基于neo4j-3.4.9版本,至于升级到3.5.x之后的版本索引有了大幅提升,还未做测试。
一、有大量存量数据(亿级以上)(并长期有增量数据进入)...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:代码科技
设计师:Amelia_0503
返回首页
马超的博客
CSDN认证博客专家
CSDN认证企业博客
码龄9年
企业员工
234
原创
1万+
周排名
3988
总排名
49万+
访问
等级
6572
积分
190
粉丝
182
获赞
92
评论
423
收藏
私信
关注
热门文章
IntelliJ IDEA报错class is never used
29928
佛祖保佑注释代码(内含神兽与美女)
28834
TensorFlow实现ResNet(ResNet 152网络结构的forward耗时检测)
26233
使用国内镜像库安装TensorFlow
25431
IDEA快捷键Scala使用快捷键
17077
分类专栏
专业书籍
1篇
图数据库
7篇
区块链
ONgDB
61篇
解决方案
23篇
数据挖掘
1篇
金融科技
3篇
行业前沿
4篇
Cypher
3篇
Geequel
1篇
数据仓库
1篇
neo4j-apoc
3篇
全媒体相关图谱
3篇
社交网络
4篇
源码赏析
1篇
TensorFlow-无人驾驶视觉分析
11篇
Git
2篇
Idea
10篇
VIM
2篇
Github
2篇
Maven
2篇
Xmanager
2篇
Sublime
4篇
TensorFlow
13篇
机器学习
6篇
算法
43篇
Python
3篇
Scala
7篇
Java
39篇
Jdk
7篇
Hadoop
7篇
Hdfs
1篇
Mapreduce
5篇
Linux
5篇
Spark
18篇
Docker
3篇
Flume
2篇
Hbase
2篇
Kafka
1篇
MySQL
2篇
计算机网络
1篇
操作系统
2篇
可视化
3篇
知识图谱
27篇
大数据应用
18篇
推荐系统
8篇
面试题
23篇
FunnyCode
1篇
Neo4j
91篇
搜索引擎
13篇
Shell
1篇
Elasticsearch
10篇
Gradle
1篇
深度学习
1篇
人工智能
11篇
最新评论
担保网络指标统计
weixin_44047894:
你好,我想请问一下,这里担保网络的数据你是如何获取的呢?
【图数据】股权网络穿透一千层需要多久?
infinite_loop233:
这个数据集是哪里下载的?有没有公开信息可以用~
基于亲属图谱的关系推理
yy_jya:
请问您是在哪里运用了前面定义的规则?
IntelliJ IDEA报错class is never used
嘎啦雷:
改了但是没有用,还是有警告
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
重磅上市《精通Neo4j》
图数据库ONgDB Release v-1.0.3
图数据平台解决方案:Docker部署
2022年18篇
2021年33篇
2020年34篇
2019年22篇
2018年8篇
2017年93篇
2016年46篇
2015年6篇
目录
目录
分类专栏
专业书籍
1篇
图数据库
7篇
区块链
ONgDB
61篇
解决方案
23篇
数据挖掘
1篇
金融科技
3篇
行业前沿
4篇
Cypher
3篇
Geequel
1篇
数据仓库
1篇
neo4j-apoc
3篇
全媒体相关图谱
3篇
社交网络
4篇
源码赏析
1篇
TensorFlow-无人驾驶视觉分析
11篇
Git
2篇
Idea
10篇
VIM
2篇
Github
2篇
Maven
2篇
Xmanager
2篇
Sublime
4篇
TensorFlow
13篇
机器学习
6篇
算法
43篇
Python
3篇
Scala
7篇
Java
39篇
Jdk
7篇
Hadoop
7篇
Hdfs
1篇
Mapreduce
5篇
Linux
5篇
Spark
18篇
Docker
3篇
Flume
2篇
Hbase
2篇
Kafka
1篇
MySQL
2篇
计算机网络
1篇
操作系统
2篇
可视化
3篇
知识图谱
27篇
大数据应用
18篇
推荐系统
8篇
面试题
23篇
FunnyCode
1篇
Neo4j
91篇
搜索引擎
13篇
Shell
1篇
Elasticsearch
10篇
Gradle
1篇
深度学习
1篇
人工智能
11篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
马超的博客
谢谢大佬的赞赏 :)
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值