拓展阅读

Full-text search index

全文搜索索引

全文搜索索引是由Apache Lucene索引和搜索库提供支持的,可以用于通过字符串属性对节点和关系进行索引。

全文搜索索引允许您编写在索引的字符串属性内容中匹配的查询。例如,在先前部分描述的范围和文本索引中,只能对字符串执行有限的匹配;精确匹配、前缀匹配、子串匹配或后缀匹配。

相反,全文搜索索引会对索引的字符串值进行标记化,以便可以在字符串的任何位置匹配项。索引的字符串如何进行标记化和拆分成项,取决于配置全文搜索索引的分析器。例如,瑞典语分析器知道如何对瑞典单词进行标记化和词干处理,并会避免索引瑞典停用词。每个分析器的完整停用词列表包含在db.index.fulltext.listAvailableAnalyzers过程的结果中。

全文搜索索引:

  • 支持对节点和关系进行索引。
  • 支持配置自定义分析器,包括Lucene本身不包含的分析器。
  • 可以使用Lucene查询语言进行查询。
  • 可以返回查询结果的分数。
  • 随着节点和关系的添加、删除和修改,会自动保持更新。
  • 新创建的索引会自动填充现有存储中的数据。
  • 可以通过一致性检查器进行检查,如果出现问题,可以重建。
  • 是存储的一个投影,只能通过其属性的内容对节点和关系进行索引。
  • 只包括STRING或 LIST<STRING> 类型的属性值。
  • 可以支持单个索引中的任意数量的文档。
  • 在事务中创建、删除和更新,会在整个集群中自动复制。
  • 可以通过Cypher®过程访问。
  • 可以配置为最终一致性,在其中将索引更新从提交路径移到后台线程。使用此功能,可以解决性能关键的提交过程中慢速Lucene写入的主要瓶颈,从而提高Neo4j写入性能。

乍一看,构建全文搜索索引似乎与常规索引相似。

然而,有一些有趣的事情需要注意:与其他索引相反,全文搜索索引可以:

  • 应用于多个标签。
  • 应用于多个关系类型。
  • 同时应用于多个属性(类似于复合索引),但有一个重要的区别:虽然复合索引仅适用于与索引的标签和所有索引的属性匹配的实体,全文搜索索引将索引至少具有一个索引标签或关系类型以及至少一个索引属性的实体。

有关如何配置全文搜索索引的信息,请参阅操作手册→支持全文搜索的索引。