2011-12-01 50 views
3

使用Lucene的查詢解析器,可以通過附加「^ n」來提高術語(使它們在搜索結果中加權)。 「apple^5 pie」將會賦予「蘋果」這個詞五倍的重要性。使用API​​構建查詢時可以這樣做嗎?請注意,我不想增加字段或文檔,而是增加字段中的單個字詞。使用Lucene的API,我可以提升條款嗎?

回答

11

您只需要使用Query類的setBoost(float)方法。

例如

TermQuery tq1 = new TermQuery(new Term("text", "term1")); 
tq1.setBoost(5f); 
TermQuery tq2 = new TermQuery(new Term("text", "term2")); 
tq2.setBoost(0.8f); 
BooleanQuery query = new BooleanQuery(); 
query.add(tq1, Occur.SHOULD); 
query.add(tq2, Occur.SHOULD); 

這相當於解析查詢text:term1^5 text:term2^0.8

+0

謝謝!現在爲什麼我找不到......我發現的所有內容都是文檔提升和字段提升。現在我不得不提問的時候覺得很蠢。但是,謝謝! – Frungi

+2

-1使OP感到啞巴。 –

+0

這個API不適用於lucene 6 ..你必須環繞boostquery?有點浪費?你知道其他方式嗎? –

相關問題