2014-09-29 102 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