我正在尝试为多词自动建议全文搜索实现Lucene查询。
例如,我希望能够在数据库中搜索Arnold Schwarzenegger
。
现在我可以用一个词进行模糊搜索:
Name.primaryName:Shwarzengger~
返回:
Arnold Schwarzenegger
Katherine Schwarzenegger
Patrick Schwarzenegger
Christian Schwarzenegger
Aurelia Schwarzenegger
Patrick M. Knapp Schwarzenegger
Brian Schwarzenegger
Christina Schwarzenegger
但是对于多词术语该如何做?
例如以下查询:
Name.primaryName:arn Shwarzengger~
无法使用以下错误:
Neo.ClientError.Procedure.ProcedureCallFailed:无法调用 过程
apoc.index.nodes
:由以下原因引起: java.lang.NullPointerException:字段不能为空
如何正确构建多词搜索词?
答案 0 :(得分:1)
您可以使用Luchene语言进行搜索:
致电apoc.index.nodes('公司','名称:Ne * AND雇员:Ma *')
https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_add_document_to_index
例如,破坏初始查询并构造一个模糊查询:
WITH "arnold schwarzenegger" AS queryString
WITH split(queryString, " ") AS terms,
"primaryName" AS key
WITH REDUCE(
acc = "",
i IN range(0, size(terms) - 2) |
acc + key + ":" + terms[i] + " OR "
) + key + ":" + terms[size(terms) - 1]
AS query
CALL apoc.index.nodes('Node', query) YIELD node
RETURN node