我正在使用neo 2.2.2,我目前正在使用Regex搜索在名称属性中查找超过600k节点的字符串。
每个节点的结构都至少包含以下两个属性。
{
name: 'some string of text',
sid: 12345
}
我在name
上创建了一个索引,在sid
上创建了另一个索引。 sid
上的查询非常快。搜索[使用正则表达式]非常慢。目前我正在搜索之前和之后都有*
的字符串。
使用neo可以做什么来快速搜索属性中的字符串?
如果在neo中做一些特别的事情并不理想,我理论上可以站起来一些与Neo4j分开的补充算法/服务,它在name属性中搜索字符串值,然后给我sid
,然后是用于在neo中查找节点。
请帮我用neo4j快速搜索字符串。 :)
答案 0 :(得分:1)
您可以使用旧版全文索引来加快搜索速度。 This blog向您展示如何。
答案 1 :(得分:1)
一般来说,正则表达式非常昂贵。从我的角度来看,你应该找到另一个解决方案。
您能告诉我们您的用例以及您希望使用Regex的原因吗?
您已经建议的一个解决方案。将SID和Name存储在另一种格式(或数据库)中,与Neo4j相比,它具有更好的Regex搜索性能。
或者对名称属性内容进行一些分析,并以此为基础创建内容表示形式。
e.g。
*节点用于名称属性中的字母数量
*节点开头信
*将名称属性拆分为多个属性
*等......