我认为您正在按领域进行提升,如果它是 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);
如果您仍然让配件出现在顶部,您将不得不使用提升值,这可能是因为描述中有很多带有 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);
额外的条件将与 isaccesory 碰撞任何东西: False 相关性更高。