【问题标题】:Lucene adding additional filter returns no resultsLucene 添加额外的过滤器不会返回任何结果
【发布时间】:2011-03-15 22:02:00
【问题描述】:

我正在尝试使用布尔查询查询一些结果。但是,查询不返回任何结果。

这是我正在运行的 FilterQuery。这不会返回任何结果,即使字段 foo 包含 bar,并且字段 foo3 包含 bar3。我已经三次检查了我的字段,以确保这些字段确实存在于索引中。

+(foo:bar foo2:bar2) +foo3:bar3

现在,如果我从查询中删除 +foo3:bar3,我会正确返回结果。 foo3:bar3 也是以编程方式添加的,所以我没有解析它。这是一些相关的代码

//This code creates the first part of the query.
MultiFieldQueryParser mfqp = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29,SearchFields, analyzer);
Query q = mfqp.Parse(query);
BooleanQuery filterquery = new BooleanQuery();
filterquery.Add(q,BooleanClause.Occur.MUST);

//This code creates the second part of the query
Query fq = new TermQuery(new Term("foo3","bar3"));
filterquery.Add(fq, BooleanClause.Occur.MUST);

//Perform the search
ScoreDoc[] hits = isearch.Search(filterquery, null, ResultsToReturn).scoreDocs;

仅供参考,我当前设置要分析的字段,向量设置为With_positions_offsets

【问题讨论】:

  • +foo3:bar3 本身是否返回任何文档?
  • 如果我修改搜索的工作方式,它确实会返回文档。如果 MFQP 将术语传递给布尔查询,那么它就可以工作。但如果我使用 termquery,它会失败

标签: c# search lucene lucene.net


【解决方案1】:

我从使用 TermQuery 改为使用 QueryParser,这似乎解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2018-09-22
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多