Neo4j在许多节点的属性内快速查找字符串

时间:2015-09-08 01:58:02

标签: search neo4j

我正在使用neo 2.2.2,我目前正在使用Regex搜索在名称属性中查找超过600k节点的字符串。

每个节点的结构都至少包含以下两个属性。

{
  name: 'some string of text',
  sid: 12345
}

我在name上创建了一个索引,在sid上创建了另一个索引。 sid上的查询非常快。搜索[使用正则表达式]非常慢。目前我正在搜索之前和之后都有*的字符串。

使用neo可以做什么来快速搜索属性中的字符串?

如果在neo中做一些特别的事情并不理想,我理论上可以站起来一些与Neo4j分开的补充算法/服务,它在name属性中搜索字符串值,然后给我sid,然后是用于在neo中查找节点。

请帮我用neo4j快速搜索字符串。 :)

2 个答案:

答案 0 :(得分:1)

您可以使用旧版全文索引来加快搜索速度。 This blog向您展示如何。

答案 1 :(得分:1)

一般来说,正则表达式非常昂贵。从我的角度来看,你应该找到另一个解决方案。

您能告诉我们您的用例以及您希望使用Regex的原因吗?

您已经建议的一个解决方案。将SID和Name存储在另一种格式(或数据库)中,与Neo4j相比,它具有更好的Regex搜索性能。

或者对名称属性内容进行一些分析,并以此为基础创建内容表示形式。

e.g。
*节点用于名称属性中的字母数量
*节点开头信 *将名称属性拆分为多个属性
*等......