上QQ阅读APP看书,第一时间看更新
3.6 全文索引
全文索引是基于节点和关系的字符串型属性建立的索引,可以用来对属性值进行匹配查询,由Apache Lucene索引和搜索库提供支持。B树索引只能对字符串进行精确匹配或前缀匹配,而全文索引可以对被索引的字符串值进行分词(tokenize),因此可以匹配字符串中任何位置的元素(term)。字符串如何被分词和分解为元素,取决于全文索引配置的分析器。例如,瑞典语分析器可以对瑞典语文本进行分词和提取主干(stem),避免索引中包含瑞典语的停用词。
全文索引的特性包括:
● 支持对节点和关系的索引。
● 支持自定义分析器,可以不使用Lucene自带的分析器。
● 可以使用Lucene语言进行查询。
● 可以给查询的每个结果打分。
● 节点和关系增删改后索引自动更新。
● 使用当前数据自动填充新创建的索引。
● 可以用一致性检查器进行检查,检查存在问题时可以重建索引。
● 只能通过属性的值来索引节点和关系。
● 可以在单个索引中支持任意数量的文档。
● 创建、删除和更新都是事务性操作,并在集群中自动复制。
● 可以通过Cypher程序访问。
● 可以配置为最终一致性模式。该模式下索引的更新操作由后台线程执行。这一功能可以解决提交过程中Lucene写入慢的问题,从而消除Neo4j写入性能的主要瓶颈。
与b树索引相比,全文索引有以下优势:
● 支持多个标签。
● 支持多个关系类型。
● 支持多个属性。这一点类似于复合索引,但有一个重要区别:复合索引的对象必须具有被索引标签和全部被索引属性,但全文索引的对象只要具有至少一个被索引标签或关系类型,和至少一个被索引属性即可。