Lucene.net过滤器的工作原理

时间:2014-07-14 10:30:43

标签: c# lucene.net

我有一段代码用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基于过滤器拉数据?请指导。谢谢。

1 个答案:

答案 0 :(得分:1)

  

我只想知道第一次lucene搜索&amp;拉出所有数据并在实现过滤器后或从头开始lucene基于过滤器拉数据?请指导。感谢。

Lucene.Net将执行您的搜索和您过滤的查询,之后,它将“合并”结果。这样做的原因我认为是缓存过滤后的查询,因为它下次比搜索查询更有可能被点击。