我的数据库中的节点位于标签关键字下,单词作为属性。我想比较一个字符串($ mostRecentPost)与数组中的单词,单词。
$queryString ="WITH["Batman","Jaws","Fun","Baseball","Halo","PS4","Nike","Jeep","Mustang"] AS words MATCH (n.Keywords) WHERE ".$mostRecentPost." =~'(?i).*n.kw.*' IN words RETURN n";
$query = new Everyman\Neo4j\Cypher\Query($client, $queryString);
$relativePosts = $query->getResultSet();
基本上我们有一个示例$ mostRecentPost =一个节点,内容="新的Halo看起来很棒"。我试图将该节点的内容与单词数组的内容进行比较,当它与其中一个数组单词匹配时,它会返回该单词。
答案 0 :(得分:0)
你的查询似乎完全没了:
.$mostRecentPost
代表什么你的正则表达式与所有单词无关
WITH [“Batman”,“Jaws”,“Fun”,“Baseball”,“Halo”,“PS4”,“Nike”,“Jeep”,“Mustang”] AS words 比赛(n.Keywords) 在哪里“。$ mostRecentPost。” =〜'(?i)。 n.kw。'IN words 返回
你可以做(这不会很快):
MATCH (n:Keywords)
WHERE n.text =~ '(?i).*(Batman|Jaws|Fun|...).*'
RETURN n
并使用regexp-string的参数
你 应该使用全文搜索 和一个单词列表,请参阅此博客文章,了解有关如何使用Neo4j 2.0进行设置的一些信息http://jexp.de/blog/2014/03/full-text-indexing-fts-in-neo4j-2-0/