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.net过滤器是如何工作的

我只是想知道第一个lucene搜索&拉所有的数据,并在实现过滤器或从一开始lucene拉基于过滤器的数据?请指导。谢谢。

Lucene。Net将执行您的搜索和过滤后的查询,之后,它将"合并"结果。我认为这样做的原因是为了缓存过滤后的查询,因为它比搜索查询更有可能在下一次命中。