Lucene添加额外的过滤器不会返回任何结果

时间:2010-07-14 15:00:57

标签: c# search lucene lucene.net

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

这是我正在运行的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

1 个答案:

答案 0 :(得分:1)

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