You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j字符串列表匹配场景:Range索引与Text索引选型对比

Neo4j Cypher查询场景的索引选择建议

场景1:精确列表匹配(IN操作)

对应查询代码:

WITH ["sword", "Sword", "blade", "Blade", "katana", "Katana"] AS weapons
MATCH (s:Set)
WHERE s.name IN weapons
RETURN s

这种精确字符串列表匹配场景下,优先选择Range索引,性能比Text索引更优。原因在于:

  • Range索引专为精确值匹配、范围查询优化,IN本质是多个精确值的OR查询,Range索引能快速定位所有匹配节点,查询开销更低。
  • Text索引的设计目标是全文模糊搜索(如子串匹配、前缀匹配),虽然也支持IN操作,但在精确匹配场景下没有性能优势,反而会有额外的全文处理开销。

创建对应Range索引的命令:

CREATE INDEX range_set_name FOR (s:Set) ON (s.name);

场景2:模糊子串匹配(ANY+CONTAINS)

对应查询代码:

WITH ["sword", "blade", "katana"] AS weapons
MATCH (s:Set)
WHERE ANY(piece IN weapons WHERE toLower(s.name) CONTAINS piece)
RETURN s

这种模糊子串匹配场景必须使用Text索引,因为Range索引不支持子串匹配类的模糊查询。为了最大化性能,建议创建带小写规范化的Text索引,避免查询时的字段转换开销:

CREATE TEXT INDEX text_set_name FOR (s:Set) ON (toLower(s.name));

该索引会提前将s.name转换为小写并建立全文索引,查询时可以直接匹配列表中的小写子串,大幅提升模糊匹配的效率。


内容的提问来源于stack exchange,提问作者Arkadiusz Górecki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 05:42:11