gpt4 book ai didi

neo4j - neo4j 2 是否支持通过索引进行正则表达式查找?

转载 作者:行者123 更新时间:2023-12-02 03:36:07 26 4
gpt4 key购买 nike

在已创建索引的标记节点上,我们有很多像下面这样的 neo4j 查询:

MATCH (entity:ARTICLE) WHERE entity.ARTICLE_ORDER_NR=~"0.*" RETURN count(DISTINCT entity);

随着数据库的增加,它会变慢,这并不奇怪,因为它不使用任何索引,从配置文件看:

ColumnFilter(symKeys=["  INTERNAL_AGGREGATEcd3c62e9-a90c-477a-bd5e-01741eed6ffc"], returnItemNames=["count(DISTINCT entity)"], _rows=1, _db_hits=0)
EagerAggregation(keys=[], aggregates=["( INTERNAL_AGGREGATEcd3c62e9-a90c-477a-bd5e-01741eed6ffc,Distinct(Count(entity),entity))"], _rows=1, _db_hits=0)
Filter(pred="LiteralRegularExpression(Property(entity,ARTICLE_ORDER_NR(221)),Literal(0.*))", _rows=19096, _db_hits=89768)
NodeByLabel(identifier="entity", _db_hits=0, _rows=89768, label="ARTICLE", identifiers=["entity"], producer="NodeByLabel")

它遍历带有标签的每个节点。

而精确匹配使用我们创建的索引:

 MATCH (entity:ARTICLE ) WHERE entity.ARTICLE_ORDER_NR="0" RETURN count(DISTINCT entity);

简介:

ColumnFilter(symKeys=["  INTERNAL_AGGREGATEae04c897-ae93-440c-8a36-3126394ccc83"], returnItemNames=["count(DISTINCT entity)"], _rows=1, _db_hits=0)
EagerAggregation(keys=[], aggregates=["( INTERNAL_AGGREGATEae04c897-ae93-440c-8a36-3126394ccc83,Distinct(Count(entity),entity))"], _rows=1, _db_hits=0)
SchemaIndex(identifier="entity", _db_hits=0, _rows=677, label="ARTICLE", query="Literal(0)", identifiers=["entity"], property="ARTICLE_ORDER_NR", producer="SchemaIndex")

所以我的猜测是正则表达式不支持索引查找。

我的问题有两个方面

  • neo4j 会在近期通过索引支持这样的正则表达式查找吗? future ?
  • 我们可以使用任何变通方法来加快速度吗?

最佳答案

全文索引肯定在路线图上,是的。缺少此功能是遗留索引尚未弃用的少数原因之一。它不是 2.0 版本的一部分的主要原因是全文查找需要新的密码语义(构造类似于 SQL 中的 LIKE 关键字),我们希望花时间仔细设计以确保正确。

也就是说,我无法估计这会在什么时候到来,我建议您暂时使用遗留索引进行全文索引。

关于neo4j - neo4j 2 是否支持通过索引进行正则表达式查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23357503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com