簡體   English   中英

使用Lucene.NET的提升將相關結果置於首位

[英]Bringing Relevant results to the top using boost in Lucene.NET

我們有許多帶有“ ipad”一詞的產品,其中包括iPad桌子和iPad配件。 當我們使用Lucene的單詞“ ipad”進行搜索時,所有配件都顯示在頂部,而iPad顯示在第25頁。 我們希望將iPad平板電腦帶到第一頁。 我們只是在為產品名稱建立索引,在建立索引時將boost 3設置為ipad平板電腦的名稱。 盡管如此,我們仍無法將iPad帶到首頁。 以下是其中一些產品。 非常感謝您的幫助。

  1. Apple iPad(第一代)MC496LL / A平板電腦(32GB,Wifi + 3G)
  2. Apple iPad 2 MC769LL / A Tablet(16GB,Wifi,Black)最新型號
  3. 蘋果Ipad2(Ipad 2)平板電腦64GB Wifi僅黑色
  4. Apple iPad 2 MC764LL / A Tablet(64GB,Wifi + Verizon 3G,黑色)最新型號
  5. iHome iPad充電站
  6. 適用於iPad的Marware Eco-Vue
  7. iLuv氯丁橡膠保護套(適用於iPad)

我認為您正在逐場提高,如果是ipad,您需要做的是提升整個文檔,否則我會做負面的事情。

Document doc = new Document();
doc.Add(new Field("name", name, Field.Store.YES, Field.Index.ANALYZED));   
doc.Add(new Field("category", category, Field.Store.YES, Field.Index.ANALYZED)); 
doc.Add(new Field("isaccesory", isaccesory.ToString(), Field.Store.NO, Field.Index.NOT_ANALYZED));  

if (isaccesory)
    doc.SetBoost(0.5); // Give all accessories lower relevance

writer.AddDocument(doc);

如果仍然有配件出現在頂部,則必須使用boost值,這可能是因為說明中包含很多ipad文字,因此lucene認為它更有意義。

您可以嘗試的一個技巧是使用另一個存儲天氣的字段,它是我在上面的示例中所做的一個附件,並將其作為OR包含在您的搜索中,例如。

var booleanQuery = new BooleanQuery();
var keywordQuery = new QueryParser().Parse(keyword); // keyword = "ipad"
var isAccesoryQuery = new TermQuery(new Term("isaccesory", "False"));
booleanQuery.Add(keywordQuery, BooleanClause.Occur.MUST); 
booleanQuery.Add(isAccesoryQuery, BooleanClause.Occur.SHOULD);

vat hits = searcher.Search(booleanQuery);

多余的條件會影響具有結點的東西:錯誤的相關性更高。

暫無
暫無

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

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