这个问题的部分答案neo4j-旧版索引和自动索引与新标签基础架构索引
and
传统索引自动索引方法与新索引方法之间的区别
我还不能对它们发表评论并在这里写一个新线程。
在我的数据库中,我有一个遗留索引“主题”和标签“主题”。
我知道:
- A。模式 MATCH(和:标签)将扫描节点;
- b.模式 START (n:Index) 将在旧索引上搜索
- C。自动索引是一种遗留索引,应该给出与(b)相同的结果,但在我的情况下却没有
- d.对于“良好实践”,START 子句应替换为 MATCH。
我在 a 之间得到了不一致的结果。和b。 (见下文),无法弄清楚如何使用 MATCH 的正确语法来搜索标签的索引。
这里有一些例子:
1#
start n=node:topic('name:(keyword1 AND keyword2)') return n
6行,3ms
start n=node:node_auto_index('name:(keyword1 AND keyword2)') return n;
0 rows
MATCH (n:Topic) where n.name =~ '(?i).*keyword1*.AND.*keyword2*.' return n;
0 行,10K 毫秒
2#
start n=node:topic('name:(keyword1)') return n
212 行,122 毫秒 [所有包含子字符串keyword1 的连贯结果]
start n=node:node_auto_index('name:(keyword1)') return n
0 rows
MATCH (n:Topic) where n.name =~ '(?i).*keyword1*.'return n
835 行,8K ms [结果也不一致,包含子字符串eyword]
MATCH (n:Topic) where n.name =~ 'keyword1' return n;
1 行,>6K 毫秒 [完全匹配]
MATCH (n:topic) where n.name =~ 'keyword1' return n;
没有结果(这里我使用索引“主题”而不是标签“主题”!)
MATCH (node:topic) where node.name =~ 'keyword1' return node;
无结果(尝试直接使用节点“对象”,如自动索引语法中所示)
你能帮忙解释一下吗:
遗留索引和自动索引之间有什么区别?为什么两者之间的结果不一致?
如何将 MATCH 子句与索引而不是标签一起使用?
我想重现全文搜索的结果。
哪种语法进行全文搜索仅适用于节点的邻居,而不适用于完整数据库?匹配 ? START 子句?遗留索引?标签?我很困惑。