在Neo4j和node_auto_index

时间:2016-01-29 04:34:24

标签: neo4j full-text-search cypher fulltext-index

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

我在图表中的属性等于(我在我的密码查询中加粗了我正在使用的单词):

  

1pizzeriadeicomparipourlesamateursdevraiespizzasitaliennescestadireavecpastropdepateetcuitesaufeudeboislaplacenepayepasdeminesalleettablesassezpetitesetilfautsarmerdepatiencelessamedisoirssionnapasreserveenv15minutesdattentemaislespizzassontexcellentes的餐厅 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”,在属性值中的餐厅之后,就像这样(看看接近值末尾的粗体字母):

  

1pizzeriadeicomparipourlesamateursdevraiespizzasitaliennescestadireavecpastropdepateetcuitesaufeudeboislaplacenepayepasdeminesalleettablesassezpetitesetilfautsarmerdepatiencelessamedisoirssionnapasreserveenv15minutesdattentemaislespizzassontexcellentesrestaurant的 AAA montrealmontrealquebeccanada5148435411

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

任何人都遇到过类似的问题!这让我发疯了!

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

我想知道在哪里或者我应该寻找什么?

1 个答案:

答案 0 :(得分:0)

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

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