我有一段代码用Lucene.net添加过滤器,但很好的解释是没有理解代码。所以我在这里粘贴代码进行解释。
List<SearchResults> Searchresults = new List<SearchResults>();
string indexFileLocation = @"C:\o";
Lucene.Net.Store.Directory dir = Lucene.Net.Store.FSDirectory.GetDirectory(indexFileLocation);
string[] searchfields = new string[] { "fname", "lname", "dob", "id"};
IndexSearcher indexSearcher = new IndexSearcher(dir);
Filter fil= new QueryWrapperFilter(new TermQuery( new Term(field, "5/12/1998")));
var hits = indexSearcher.Search(QueryMaker(searchString, searchfields), fil);
for (int i = 0; i < hits.Length(); i++)
{
SearchResults result = new SearchResults();
result.fname = hits.Doc(i).GetField("fname").StringValue();
result.lname = hits.Doc(i).GetField("lname").StringValue();
result.dob = hits.Doc(i).GetField("dob").StringValue();
result.id = hits.Doc(i).GetField("id").StringValue();
Searchresults.Add(result);
}
我需要解释以下两行
Filter fil= new QueryWrapperFilter(new TermQuery( new Term(field, "5/12/1998")));
var hits = indexSearcher.Search(QueryMaker(searchString, searchfields), fil);
我只想知道第一次lucene搜索&amp;拉出所有数据并在实现过滤器后或从头开始lucene基于过滤器拉数据?请指导。谢谢。
答案 0 :(得分:1)
我只想知道第一次lucene搜索&amp;拉出所有数据并在实现过滤器后或从头开始lucene基于过滤器拉数据?请指导。感谢。
Lucene.Net将执行您的搜索和您过滤的查询,之后,它将“合并”结果。这样做的原因我认为是缓存过滤后的查询,因为它下次比搜索查询更有可能被点击。