Neo4j的全文索引采用Lucene,能够对neo4j中string类型的属性建立全文索引,有如下特点:
- 能够同时为node和relationship的属性建立索引。而neo4j内嵌的索引仅能够对node的属性建立索引。
- 至于字符串如何被切分和索引,取决于为lucene配置的analyzer。支持自定义Analyzer,包括lucene中没有提供的。能够用lucene查询语句进行查询;
- 能够返回相似度score;
- 能够返回相似度score;
- 能够随着节点和关系的添加、移除、修改进行自动的更新;
- 自动检查一致性,如果有不一致的问题自动重建;
- 在单个索引中,能够支持任意数目的文档;
- 创建、删除、更新都是事务的,能够在集群中自动进行副本;
- 能够通过cypher语句访问.
- 能够配置为满足最终一致性。即,索引更新在提交路径中被移除,转为后台线程。利用此特性,对于性能要求高的场景,能够消除主要的写瓶颈。
相比于Neo4j内嵌的索引,采用Lucene索引具有如下优势:
- neo4j的内嵌索引采用b树,其仅能够对STARTS WITH、ENDS WITH、完全相等三种条件起作用。而lucene建立的全文索引能够对任意片段的字符串进行查询。
- lucene索引能够对多个label建立.
- lucene索引能够对一到多个关系建立.
- 能够同时应用于多个属性。与内嵌索引的Composite Index不同。Composite Index仅对满足label且同时具有所有属性的实体起作用,而全文索引则对至少满足一个label、关系类型、属性的节点或关系起作用。