【发布时间】:2011-12-01 06:44:12
【问题描述】:
使用 Lucene 的查询解析器,可以通过附加“^n”来提升词条(使它们在搜索结果中的权重更高),例如“apple^5 pie”将赋予“apple”一词五倍的重要性。使用 API 构建查询时是否可以这样做?请注意,我不想提升字段或文档,而是提升字段中的单个术语。
【问题讨论】:
使用 Lucene 的查询解析器,可以通过附加“^n”来提升词条(使它们在搜索结果中的权重更高),例如“apple^5 pie”将赋予“apple”一词五倍的重要性。使用 API 构建查询时是否可以这样做?请注意,我不想提升字段或文档,而是提升字段中的单个术语。
【问题讨论】:
您只需要使用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。
【讨论】: