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

Lucene query praser,只读取特定字段查询,行为在2.9.3中更改

  •  0
  • recursive9  · 技术社区  · 15 年前

    我需要我的查询解析器只读取“文本”字段。
    例如,假设我的查询是: 文字:“这只狐狸”或标题:“棕色狗” 为了突出显示,我需要解析器/搜索器只使用文本:“this fox”部分进行搜索。 在2.4版中,这一功能运行良好,但升级到2.9.3版后,情况发生了变化。

    示例代码:

    IndexSearcher is = new IndexSearcher(fsDir);
        QueryParser qp = new QueryParser("text", new StandardAnalyzer(nostop));
      qp.setMultiTermRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
    Query queryDiv;
        try {
          query = is.rewrite(queryParser.parse(query_str)); 
        }
    
        catch (ParseException e) {
          pw.print("error: Incorrect query format");
          pw.close();
          return; 
        }
    Hits hits = is.search(queryDiv, sort);
    
        QueryScorer scorer = new QueryScorer(query, "text");
    

    出于某种原因,我不知道,lucene 2.9.3在2.4版本中没有显示任何结果,因为它忽略了文档没有的字段,更不用说其中有一个OR条件。

    有什么想法吗?

    1 回复  |  直到 15 年前
        1
  •  0
  •   recursive9    15 年前

    请忽略这一点。我的逻辑中有一个缺陷,那就是我在申请后端。谢谢你找我