簡體   English   中英

過濾Lucene搜索結果

[英]Filtering results of Lucene search

讓我解釋一下我的問題。 我正在使用Lucene在asp.net網頁中搜索並顯示結果。 當我搜索時,Lucene顯示與我的搜索相關的所有記錄。 例如,我有5000條名為John的記錄。 如果我鍵入John,它將顯示所有這5000條記錄。 我想根據其他一些屬性限制這5000條記錄。 我有四個屬性,即名字,姓氏,DOB和ID。 在那5000條記錄中,我希望它只顯示用戶輸入的DOB。 這意味着只顯示擁有DOB為5/12/1998的約翰的記錄。 這會將結果限制為大約50條記錄。 完成后,我想搜索具有相同ID的所有字段,然后顯示這些記錄。 最后,我將使用給定的DOB和相同的ID記錄John的記錄。

注意:DOB過濾是出於安全目的。

以下是我的搜索代碼。

        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);

        var hits = indexSearcher.Search(QueryMaker(searchString, searchfields));

        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);

您可以使用上面的代碼過濾結果。

我不認為在過濾查看值后可以返回。 有人不同意嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM