2016-01-29 54 views
1

我有一個圖形數據庫(Neo4j),其中我將一個屬性配置爲使用全文自動索引。除了當我執行特定的密碼查詢時沒有返回1行時,一切都很好。在Neo4j和node_auto_index中使用密碼查詢的奇怪結果

我在圖中的equals(我已經把大膽我使用的話在我的暗號查詢)特性:

1pizzeriadeicomparipourlesamateursdevraiespizzasitaliennescestadireavecpastropdepateetcuitesaufeudeboislaplacenepayepasdeminesalleettablesassezpetitesetilfautsarmerdepatiencelessamedisoirssionnapasreserveenv15minutesdattentemaislespizzassontexcellentes 餐廳 montrealmontrealquebeccanada5148435

我f執行以下密碼查詢:

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和最新的社區3.0.0-M02上進行了測試。與他們兩人的結果相同。

任何想法,我應該尋找什麼?

回答

0

查詢條件通過lucene分析器傳遞 - 就像您索引的內容一樣。我不是100%確定的,但我認爲默認分析儀「吃掉」了數字,這就是爲什麼你沒有得到結果。

您可以在首次創建索引時提供分析器類。您也可以使用Java API來查詢索引 - 這允許在Lucene Query的實例中傳遞,請參閱我的示例http://blog.armbruster-it.de/2014/10/deep-dive-on-fulltext-indexing-with-neo4j/

+0

我會看看不同的分析儀,但因爲我不確定它是關於數字的,因爲我在圖中有大約5000個條目,所有都有數字,當我查詢它們時,除了我描述的特定行以上,如果我通過再加3個字母來改變這個值,那麼這個行就會被找到! –

+0

另外,如果人們正在雙語輸入文本(即:法語和英語),您知道任何採用多種語言的自定義分析器嗎? –

+0

幾個人在他們的財產密鑰上使用了一種命名慣例,例如, 'name_en','name_fr'。在這種情況下,您不能使用自動索引,但可以使用手動索引 - 每種語言一個索引。 –