繁体   English   中英

Lucene.net过滤器如何工作

[英]How Lucene.net filter works

我得到了一段代码,可以通过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将执行搜索和过滤后的查询,之后,它将“合并”结果。 我相信这样做的原因是要缓存已过滤的查询,因为与搜索查询相比,下一次它更有可能在点击时获得成功。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM