代码之家  ›  专栏  ›  技术社区  ›  alexanoid

neo4j-lucene多词自动建议模糊全文检索查询语法

  •  0
  • alexanoid  · 技术社区  · 7 年前

    我正在尝试实现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:字段不能为空

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   stdob--    7 年前

    您可以使用LuxEne语言来搜索:

    调用apoc.index.nodes('company','name:ne*和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
    
    推荐文章