我已经在“text”属性的 TRANSLATION 节点类型上创建了 fts 索引。现在我有关键字“home”和“house”,并且想要搜索与这些词有共同点的 BOX 节点。 因此查询应返回 ID 为“b1”的节点 BOX,因为它的详细信息包含包含“home”和“house”的翻译。
不应返回 id 为“b2”的 BOX 节点,因为它只包含“house”关键字,而不包含“home”。
如何实现这一目标? fts可以吗?也许我必须以另一种方式对其进行索引? 我想到的一件事是为每个关键字调用 FTS 两次(或 x)次,然后获取两次(x)结果中出现的节点。
我建议深入研究 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 可能也不错。