Solr Custom Boosting如果特定字段与查询匹配

时间:2014-06-17 08:52:19

标签: solr

我们正在尝试使用自定义提升实现一个非常有趣的搜索逻辑,我想知道Solr是否可以支持这一点。 我们的索引中包含以下字段:

  • 名称
  • 说明
  • 关键字(数组)

每个关键字都有一个与之配对的金额(int值)。

在名称,描述和关键字字段中运行搜索。如果关键字与搜索文本匹配,则必须仅根据匹配关键字的数量来提升相应的索引。

我通过Solr DisMax阅读,他们只能使用固定金额增加一个字段。

我的方案是仅根据匹配关键字将结果提升X个数量。

提前致谢

2 个答案:

答案 0 :(得分:0)

如果您没有太多不同的金额,也许您可​​以在索引时尝试:

根据相关数量将“关键字”存储在不同的字段(dynamicfields->boost-*)中:

boost-1 = keyword1,keyword4,keyword6 <br/>
boost-10 = keyword2<br/>
boost-100 = keyword5

您可以搜索所有提升字段(edismax),使用(e)dismax conf(boost-1^1,boost-10^10,boost-100^100)中的金额提升每个动态字段。

答案 1 :(得分:0)

我看到这个问题唯一可行的解​​决方案(假设您事先不知道关键字的数量)将只是将查询作为过滤查询(跳过评分阶段),获取所有匹配的文档(有点问题),然后使用匹配的术语对它们进行排序,以构建一个java Comparator。

当您获得特别多的文档时可能会出现问题,但您可能会通过分页来解决此问题