Neo4j全文搜索-常用节点

问题描述 投票:0回答:1

我需要为 FTS 结果找到一个公共节点。

我已经在“text”属性的 TRANSLATION 节点类型上创建了 fts 索引。现在我有关键字“home”和“house”,并且想要搜索与这些词有共同点的 BOX 节点。 因此查询应返回 ID 为“b1”的节点 BOX,因为它的详细信息包含包含“home”和“house”的翻译。

不应返回 id 为“b2”的 BOX 节点,因为它只包含“house”关键字,而不包含“home”。

如何实现这一目标? fts可以吗?也许我必须以另一种方式对其进行索引? 我想到的一件事是为每个关键字调用 FTS 两次(或 x)次,然后获取两次(x)结果中出现的节点。

neo4j cypher
1个回答
0
投票

我建议深入研究 apoc.text 库。

apoc.text.fuzzyMatch 似乎非常适合这个用例。

大致如下:

MATCH (n:Translation)
WITH apoc.text.fuzzyMatch(toLower(n.details), toLower(${searchTerm})) AS fuzzyMatch, n
WHERE fuzzyMatch = true
RETURN n LIMIT 10

此外,由于它有翻译应用程序,因此 apoc.text.phonetic 可能也不错。

文档: apoc.text.fuzzyMatch apoc.text.phonetic

© www.soinside.com 2019 - 2024. All rights reserved.