在Neo4j中搜索带空格的全文搜索

时间:2014-08-22 15:13:21

标签: lucene neo4j full-text-search cypher

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

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

正常工作(假设您有一个名为asdf adsf的节点。

但是,在these instructions之后将索引切换为“全文”模式(包括删除索引并重新分配索引属性)时,相同的查询不会返回任何结果。

原始问题

在空格后放置通配符时,尝试通过全文索引搜索neo4j。

请参阅图表要点:http://gist.neo4j.org/?74c5a0bb4587cf4b5489

3 个答案:

答案 0 :(得分:3)

要在旧索引的索引查询中使用空格,请使用两个反斜杠,因为一个由cypher eaten

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

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

答案 1 :(得分:3)

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

Lucene query syntax documentation声明:

  

Lucene支持单个术语内的单个和多个字符通配符搜索(不在短语查询中)。

因此,您不能将*通配符与短语一起使用(这不起作用:"asfd a*")。相反,使用AND运算符搜索两个单项:

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

答案 2 :(得分:0)

您可以将查询编写为:

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

更多信息请点击此处:http://docs.neo4j.org/chunked/milestone/query-where.html