2014-09-29 60 views
0

在Neo4j中,我們可以做mysql查詢「like」 with如何在Neo4j中做精確的單詞匹配?

ex。 如果節點「TEMP」有列「關口」和價值「這是在世界戰爭1945年」;

如果我們用 「窩」

並在搜索查詢

temp.col =~ '(?i).*'. $search_value . '.*' 

然後結果來了。但是我希望只有在任何案例變化的情況下搜索世界的結果纔會到來。

如何做到確切的詞匹配?

即如果我們搜索的字符串,那麼就應該在開始和單詞的末尾空間或沒有任何角色。

+0

「(我)」中的Neo4j用於情況-sensative匹配。 「。*」在Mysql中用作「%」。我想在字符串中做精確的單詞匹配,而不是子字符串。 @nhahtdh – 2014-09-29 07:58:52

+0

你的問題有點令人困惑:當你用'wor'搜索時,你希望'world'出現的結果是? – nhahtdh 2014-09-29 08:35:17

+0

我說當我用「wor」搜索的結果不應該來的時候。但是,當我通過「世界」搜索結果應該來。 @nhahtdh – 2014-09-29 09:35:35

回答

1
=~ '(?i).*'. $search_value . '.*' 

=〜=正則表達式搜索 (?I)=情況insenstive 。* =匹配任何 $ search_value =您的字符串 。* =匹配任何

如果你想匹配整個單詞,並且要大小寫相匹配,如果是全詞可能出現中期句話,那麼你可以嘗試:

=~'.*\\b' . $search_value . '\\b.*' 

\b是一個字邊界匹配。

更新:"\\b"雙斜槓都需要escaping in for regular expressions

+0

'java string parser'這段代碼是用PHP編寫的。 – nhahtdh 2014-09-29 08:19:20

+0

當然@nhahtdh,我可以看到,但查詢將在哪裏運行? – JohnMark13 2014-09-29 08:20:10

+0

無論查詢將在哪裏運行,字符串文字都會在PHP中解析。下一個級別將在正則表達式引擎中解析。 – nhahtdh 2014-09-29 08:20:58