Neo4j内部集成了LUCENE,可以进行英文全文检索,为了支持中文,需要额外安装中文分词插件,老版本用的是jieba,这回试试IK-Analyer。
IK-Analyer插件网址:
https://github.com/crazyyanchao/neo4j-graph-plugin
下载neo4j-graph-plugin-1.0.1.jar文件,放到neo4j的plugins目录下
该插件对应的ik版本为:IKAnalyzer-5.0,支持LUCENE-5.5.0
修改neo4j配置文件,
vim conf/neo4j.conf
因为这个插件的包名是以zdr开头的,所以需要修改一下配置,把
dbms.security.procedures.unrestricted=apoc.*
改为
dbms.security.procedures.unrestricted=apoc.*,zdr.*
重启Neo4j服务,就算安装成功了。
好了,执行
RETURN zdr.apoc.hello("象网") as greeting
如果有下面返回结果,则证明插件运行成功
1.png
初次会失败!
但是,运行函数zdr.index.iKAnalyzer会报莫名其妙的错误,经过测试
需要继续从https://github.com/crazyyanchao/neo4j-graph-plugin下载neo4j-graph-plugin-master.zip文件,解压缩后取出其中的dic目录拷贝到neo4j根目录下,否则一直运行失败。
好了,下面执行中文分词
RETURN zdr.index.iKAnalyzer('象网提供领先的项目管理课程,有象网不盲从',true) AS words
看看执行结果:
["象", "网", "提供", "领先的", "项目管理", "课程", "有", "象", "网", "不", "盲从"]
太离谱了,象网都不认识!
好吧,打开用户自定义词典,这个文件藏得比较深,
vim dic/dic-cfg/user-dic/user_defined.dic
里面添加“象网”这个词,重新启动neo4j,再次运行分词语句,结果如下
["象网", "提供", "领先的", "项目管理", "课程", "有", "象网", "不", "盲从"]
可以正确分词了。如果想修改用户自定义词典的位置,可以修改配置文件
vim dic/dic-cfg/IKAnalyzer.cfg.xml
2.png
这个文件主要是配置自定义词典和停用词表的目录。