【问题标题】:Neo4j Lucene query syntax for multi-word autosuggest fuzzy fulltext searchNeo4j Lucene 多词自动提示模糊全文搜索的查询语法
【发布时间】:2019-05-09 20:32:59
【问题描述】:

我正在尝试为多词自动提示全文搜索实现 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: 字段不能为空

如何正确构建多词搜索词?

【问题讨论】:

    标签: neo4j lucene full-text-search fuzzy-search neo4j-apoc


    【解决方案1】:

    您可以使用Lucene语言进行搜索:

    CALL apoc.index.nodes('Company','name:Ne* AND employees: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
    

    【讨论】:

    • 非常感谢您的回答!查询就像一个魅力!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 2014-07-11
    • 2014-05-04
    • 1970-01-01
    • 2012-02-22
    • 2013-08-08
    • 2014-06-11
    相关资源
    最近更新 更多