[英]Bringing Relevant results to the top using boost in Lucene.NET
我們有許多帶有“ ipad”一詞的產品,其中包括iPad桌子和iPad配件。 當我們使用Lucene的單詞“ ipad”進行搜索時,所有配件都顯示在頂部,而iPad顯示在第25頁。 我們希望將iPad平板電腦帶到第一頁。 我們只是在為產品名稱建立索引,在建立索引時將boost 3設置為ipad平板電腦的名稱。 盡管如此,我們仍無法將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.