1

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

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

1比萨店deicomparipourlesamateursdevraiespizzasitaliennescestadireavecpastropdepateetcuitesaufeudeboislaplacenepayepasdeminesalleettablesassezpetitesetilfautsarmerdepatiencelessamedisoirssionnapasreserveenv15minutesdattentemaislespizzassontexcellentes restaurant montrealmontrealquebeccanada5148435 411

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

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

我的行又回来了!到目前为止没问题!

但是当我通过将“餐厅”这个词放在一起来执行它时,如下所示:

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

然后不返回任何行。

我测试了很多东西,以便理解并尝试找到一种模式或可以解释问题的东西。似乎我的财产价值的长度可能会起作用。我知道这听起来很奇怪,但如果我添加 3 个或更多字母,让我们说“aaa”,在属性值中的餐厅一词之后,如下所示(查看靠近值末尾的粗体字母):

1比萨店deicomparipourlesamateursdevraiespizzasitaliennescestadireavecpastropdepateetcuitesaufeudeboislaplacenepayepasdeminesalleettablesassezpetitesetilfautsarmerdepatiencelessamedisoirssionnapasreserveenv15minutesdattentemaislespizzassontexcellentesrestaurant aaa Montrealmontrealquebeccanada5148435411

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

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

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

关于我应该在哪里寻找或寻找什么的任何想法?

4

1 回答 1

0

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

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

于 2016-01-29T12:34:34.463 回答