Neo4j 和 node_auto_index 中密码查询的奇怪结果

Weird results with cypher query in Neo4j and node_auto_index

我有一个图形数据库 (Neo4j),我在其中配置了一个 属性 以使用全文自动建立索引。一切都很好,除了我有 1 行在执行特定的密码查询时没有返回。

图表中我的 属性 等于(我用粗体显示了我在密码查询中使用的词):

1pizzeriadeicomparipourlesamateursdevraiespizzasitaliennescestadireavecpastropdepateetcuitesaufeudeboislaplacenepayepasdeminesalleettablesassezpetitesetilfautsarmerdepatiencelessamedisoirssionnapasreserveenv15minutesdattentemaislespizzassontexcellentesrestaurantmontrealmontrealquebeccanada5148435411

如果我执行以下密码查询:

START n1=NODE:node_auto_index('Search_Field:*res* AND Search_Field:*taurant* AND Search_Field:*411*')
RETURN n1.Search_Field

我的行被退回了! 目前没问题!

但是当我像这样把«restaurant»这个词放在一起执行它时:

START n1=NODE:node_auto_index('Search_Field:*restaurant* AND Search_Field:*411*')    
RETURN n1.Search_Field

则没有返回任何行。

我测试了很多东西以理解并尝试找到可以解释问题的模式或东西。似乎我的 属性 值的长度可能起作用。我知道这听起来很奇怪,但是如果我添加 3 个或更多字母,比如在 属性 值中的 restaurant 一词之后添加 « aaa »,就像这样(查看靠近值末尾的粗体字母):

1pizzeriadeicomparipourlesamateursdevraiespizzasitaliennescestadireavecpastropdepateetcuitesaufeudeboislaplacenepayepasdeminesalleettablesassezpetitesetilfautsarmerdepatiencelessamedisoirssionnapasreserveenv15minutesdattentemaislespizzassontexcellentesrestaurantaaamontrealmontrealquebeccanada5148435411

然后,如果我执行相同的密码查询,现在返回该行。

谁遇到过类似的问题!这让我发疯!

我已经在 Neo4j-enterprise 2.2.1 和最新的 Community 3.0.0-M02 上进行了测试。两者的结果相同。

知道我应该在哪里寻找什么吗?

查询词通过 lucene 分析器传递 - 就像您索引的内容一样。我不是 100% 确定,但我认为默认分析器 "eats up" 数字,这就是你得不到结果的原因。

您可以在首次创建索引时提供分析器class。您还可以使用 Java API 来查询索引 - 这允许传入 Lucene Query 的实例,请参阅我在 http://blog.armbruster-it.de/2014/10/deep-dive-on-fulltext-indexing-with-neo4j/.

的示例