rem*_*emy 10 lucene search-engine
在我的例子中,文档有两个字段,例如"title"和"views"."views"表示人们访问此文档的次数.喜欢:"标题":"iphone","views":"10".我必须制定一个策略,为视图分配一些权重,例如相关性得分由得分(标题)*0.8 +得分(观点)*0.2计算.lucene可以做到这一点吗?我想知道是否有一些与此问题相关的算法.
jpo*_*ntz 10
以下是如何做到这一点:
Query titleQuery, viewsQuery;
titleQuery.setBoost(0.8);
viewsQuery.setBoost(0.2);
BooleanQuery query = new BooleanQuery();
query.add(titleQuery, Occur.MUST); // or Occur.SHOULD if this clause is optional
query.add(viewsQuery, Occur.SHOULD); // or Occur.MUST if this clause is required
// use query to search documents
Run Code Online (Sandbox Code Playgroud)
得分将与0.8*score(titleQuery) + 0.2*score(viewsQuery)(乘以常数)成比例.
要利用您的views字段,您可能需要使用ValueSourceQuery.
cqu*_*zel 10
如果您在 2020 年之后到达这里,请使用 Lucene 8.5.2。
出行方式:
在 à BoostQuery 中包装您的查询(任何查询,但在这种情况下可能是 TermQuery)
Query boosted = new BoostQuery(query, 2f);
Run Code Online (Sandbox Code Playgroud)在查询解析器语法中使用插入符号 ^ 符号。
你可以通过3种方式提升.根据您的需要,您可能希望使用组合
文档级别提升 - 在索引时 - 通过在将文档添加到索引之前调用document.setBoost().
文档的字段级别提升 - 在索引时 - 通过在向文档添加字段之前(以及在将文档添加到索引之前)调用field.setBoost().
查询级别提升 - 在搜索期间,通过在查询子句上设置提升,调用Query.setBoost().
来源:http://lucene.apache.org/core/old_versioned_docs/versions/3_0_0/scoring.html
| 归档时间: |
|
| 查看次数: |
10722 次 |
| 最近记录: |