就我而言,文档有两个字段,例如“标题”和“ View ”。 “views”代表人们访问此文档的次数。喜欢:“标题”:“iphone”,“意见”:“10”。
我必须制定一个策略,为 View 分配一些权重,例如相关性分数由 score(title)*0.8+score(views)*0.2 计算。 lucene可以做到这一点吗?我想知道是否有一些与这个问题相关的算法。
最佳答案
您可以这样做:
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
得分将与
0.8*score(titleQuery) + 0.2*score(viewsQuery)
成正比(乘以常数)。利用您的
views
字段,您可能需要使用 ValueSourceQuery .
关于Lucene:如何提升某些特定领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9829161/