我使用了Neo4j的db.index.fulltext.queryNodes,并使用通配符得到了很好的结果。
有没有办法返回在搜索文本中找到的特定术语?例如,我搜索Sm*th,希望看到Smith或Smyth。
在Neo4j中,我在节点属性“ancoustrivous_surnames”上创建了索引,这是一个非结构化的姓氏字符串。
CREATE FULLTEXT INDEX ancestor_surnames_names FOR (n:ancestor_surnames)\n" +
"ON EACH [n.name]
然后,我搜索一个姓氏和关联的DNA_Match节点:
CALL db.index.fulltext.queryNodes('ancestor_surnames_names', 'Stinn*tt ') YIELD node, score
WITH score,node.p as match,node.name as anc_names
MATCH (m:DNA_Match{fullname:match})
return distinct m.fullname,match,anc_names order by m.fullname
我得到了完整的非结构化的姓氏列表,并希望提取出找到的术语。
2条答案
按热度按时间vpfxa7rd1#
下面的例子用于搜索Movies数据库。你可以对你的节点Person做类似的操作。
对于Neo4j版本4.2及更低版本,请使用以下语法:
或
Neo4j 4.3以上版本
然后使用 * 或?通配符进行如下查询。
brccelvz2#
谢谢何塞...
这是一个完整的查询,它给出了我想要的结果,包括找到的两个单词的列表。查询本身需要在我正在创建的用户定义函数中用java代码动态创建。但是这很巧妙!