2014-12-05 127 views
1

我正在使用BooleanFilter在lucene索引中执行过滤器。Lucene.NET 3.0.3中FilterClause为空的BooleanFilter

代码:

BooleanFilter _filter = new BooleanFilter(); 
var locationFilter = new TermsFilter(); 
locationFilter.AddTerm(new Term("Location", "Dhaka")); 
_filter.Add(new FilterClause(locationFilter, Occur.MUST)); 

在我的搜索代码片断

var hits = searcher.Search(query, _filter, hits_limit, Sort.RELEVANCE).ScoreDocs; 

此代码工作正常;

但有时我并不需要的位置进行筛选的话,我只是把一个空BooleanFilter并执行搜索这样的:

BooleanFilter _filter = new BooleanFilter(); 
    var hits = searcher.Search(query, _filter, hits_limit, Sort.RELEVANCE).ScoreDocs; 

现在为什么不匹配,不回我没有搜索结果?;

回答

1

我认为你的空BooleanFilter是没有匹配..

尝试使用搜索的其他重载search(Query query, int n, Sort sort)

+0

我有一个检查,做到了'如果(没有任何过滤选项)''然后搜索(查询查询,int n,BooleanFilter null,Sort排序)' – Moshii 2014-12-09 11:04:36