簡體   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