Lucene.net过滤器是如何工作的
本文关键字:工作 何工作 net 过滤器 Lucene | 更新日期: 2023-09-27 18:12:52
我得到了一段用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搜索&拉所有的数据,并在实现过滤器或从一开始lucene拉基于过滤器的数据?请指导。谢谢。
我只是想知道第一个lucene搜索&拉所有的数据,并在实现过滤器或从一开始lucene拉基于过滤器的数据?请指导。谢谢。
Lucene。Net将执行您的搜索和过滤后的查询,之后,它将"合并"结果。我认为这样做的原因是为了缓存过滤后的查询,因为它比搜索查询更有可能在下一次命中。