簡體   English   中英

在 Lucene.net 中搜索的過濾器索引

[英]Filter index for searching in Lucene.net

我目前正在開展一個項目,該項目涉及 C# 中的 Lucene 庫,但是我的項目設計遇到了一個問題,涉及檢索索引中的文檔。 我的索引中的文檔是用幾個字段創建的,我希望能夠在這兩個字段之間進行過濾,然后在這個子集中搜索術語但是我仍然熟悉 lucene 並且我不完全確定這是否可能. 我已經學會了如何執行基本查詢,但我認為我應該使用 lucenes 過濾器 class 但我不確定如何。 如果有人能就此提供建議,我將不勝感激

我正在完成的項目涉及索引來自各種 email 帳戶的 email 消息。 我索引中的文檔包含以下一些字段: 帳戶:(例如 fake@fake.com) 文件夾:(例如已發送、垃圾箱、收件箱...) 數據:(電子郵件正文)

我希望能夠過濾我的索引,以便我可以擁有一個僅包含來自特定帳戶和文件夾的文檔的子集,然后在此之后我希望能夠搜索該子集的數據字段。

正如@Jf Beaulac 建議的那樣,您可以使用 BooleanQuery 進行“過濾”。

private Query CreateFilteredQuery (string account, string folder, Query criteria)
{
     BooleanQuery bq = new BooleanQuery();
     bq.Add(new TermQuery (new Lucene.Net.Index.Term ("account", account)), BooleanClause.Occur.MUST);
     bq.Add(new TermQuery (new Lucene.Net.Index.Term ("folder", folder)), BooleanClause.Occur.MUST);
     bq.Add(criteria, BooleanClause.Occur.MUST);
     return bq;
}


Query filteredQuery = CreateFilteredQuery ("fake@fake.com", "inbox", myQueryParser.Parse (criteria));
var hits = myIndexSearcher.Search (filteredQuery);

這是關於查詢和過濾器之間區別的一個很好的問題: 為什么我們在搜索時使用過濾器

暫無
暫無

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

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