Lucene Neo4j中带空格的全文搜索

Lucene Neo4j中带空格的全文搜索,lucene,neo4j,full-text-search,cypher,Lucene,Neo4j,Full Text Search,Cypher,当neo4j lucene自动索引处于精确模式(默认模式)时,类型为: start n=node:node_auto_index('name:asfd\\ a*') return n 正确工作(例如,假设您有一个名为asdf adsf的节点 但是,在将索引切换到“全文”模式(包括删除索引和重新分配索引属性)之后,同一查询不会返回任何结果 原始问题 在空格后放置通配符时,尝试通过全文索引搜索neo4j无效 请参见图表要点:您可以将查询编写为: MATCH (n) WHERE n.name =~

当neo4j lucene自动索引处于精确模式(默认模式)时,类型为:

start n=node:node_auto_index('name:asfd\\ a*') return n
正确工作(例如,假设您有一个名为
asdf adsf
的节点

但是,在将索引切换到“全文”模式(包括删除索引和重新分配索引属性)之后,同一查询不会返回任何结果

原始问题 在空格后放置通配符时,尝试通过全文索引搜索neo4j无效


请参见图表要点:

您可以将查询编写为:

MATCH (n)
WHERE n.name =~ 'asfd.*'
RETURN n

更多信息如下:

要在旧索引的索引查询中使用空格,请使用两个反斜杠,因为其中一个会被密码吃掉:

 start n=node:node_auto_index('name:asfd\\ a*') return n

如果从Java使用Cypher,由于Java字符串引用,您需要四个反斜杠。

用另一对()括号嵌入Cypher的Lucene部分

声明:

Lucene支持在单个术语(而不是短语查询)中进行单字符和多字符通配符搜索

因此,您不能将
*
通配符与短语一起使用(这将不起作用:
“asfd a*”
)。相反,请使用
运算符搜索两个单独的术语:


start n=node:node_auto_index('name:(asfd和a*))return n

这会使用lucene全文引擎吗?不,这不会使用索引。这是一个查询,查找每个节点并根据属性进行筛选。有关Neo4j 2.2之前的全文索引的使用,请参阅:谢谢Stefan,但我已经尝试过了,因为Gist中的最后一个查询双引号和双转义空格不起作用-(无错误但无结果)我对我的fork所做的最新更改使它起作用:基本上你需要删除搜索词周围的双引号。再次感谢Stefan,事实上,图表要点有效,它帮助我进一步隔离我的问题!我编辑了这个问题,因为我在使用全文索引而不是精确索引时遇到问题。另请参阅和