2014-01-13 57 views
1

執行不區分大小寫的Cypher查詢非常容易。我現在試圖弄清楚是否有一個簡單的方法來使Accent Insensitive查詢。我想類似的查詢:Neo4J中的重音不敏感查詢

MATCH n:City WHERE n.Name =~ '(?a)Montreal' RETURN n

是否有人已經找到了解決這個?我是否必須依靠創建FullText Lucene Index以及Custom Analyzer

回答

1

Lucene全文索引自動不區分大小寫。所以不需要定製分析儀。

另一種選擇是在圖表中存儲小寫版本的信息,並將其用於查找或搜索。我知道這是一個薄弱的解決方法。

+0

謝謝。當我說使用「自定義分析器」時,這是因爲我還需要執行'強調不敏感'的研究。在法語中,我們有很多口音(éèçàî等等),需要在(eecai ...)中進行轉換。 –

+0

我正在考慮爲每個需要搜索的字段使用重複字段,但是我發現當我試圖在大量節點中搜索時,Neo4J非常慢,與我能用MySQL做的事情相比。我想用Lucene Index來測試它是否能夠改善性能! –

1

Neo4j 2.0中的模式索引目前不允許配置分析器。這可能會在Neo4j的後續版本中添加。與此同時,您可以使用舊索引(允許您自定義分析器)或在應用程序端對字符串進行規範化。

+0

謝謝。當你說在應用程序端對字符串進行規範化時,你的意思是圖中的所有內容都應該是無Accent的,或者我們應該在圖中爲每個字符串保留兩個字符串,一個是顯示字符串,另一個是可搜索的無重音串? –

+0

我猜想將字符串的兩個版本存儲在不同的屬性中,例如name,normalized_name可能是最好的方法。你甚至可以通過實現和註冊一個http://api.neo4j.org/2.0.0/org/neo4j/graphdb/event/TransactionEventHandler.html來實現自動化。 –

+0

這就是我強硬的。我正在試圖評估Neo4j與普通的MySQL數據庫。在MySQL中,所有這些都是自動化的。我會用自定義分析器嘗試一些東西(如你建議的那樣)以及遺留索引,並看看它是如何發展的。謝謝。 –