使用现有字段进行 solr 排名

标签 solr

我正在使用 DataImportHandler 将 mysql 数据库中的数据加载到 Solr 中。每个文档都包含一个 popularity 字段(int 类型),该字段是从另一个应用程序计算出来并保存到 mysql 中的(该字段基于与应用程序域相关的一些规则)。

我如何使用这个值来提高 solr 排名?将 solr scorepopularity 值相加是否正确? 如何bf可以在这里使用吗?

最佳答案

一个可能有效的良好起点是将分数乘以随着受欢迎程度而(缓慢)增加的次线性函数。例如,

newScore = score * log(1 + 0.5 * popularity)

要应用此提升,您应该使用 Solr 的 EDisMax query parser并通过the boost parameter具有以下值:

&boost=log(sum(1, product(0.5, popularity)))

其中流行度是字段的名称。您不需要使用 bf 参数,因为您应该使用乘法提升,而不是加法提升。

之所以加1是为了处理popularity=0的情况(因此如果每个文档的流行度始终至少为1,则不需要加1)。通过将 0.5 因子更改为其他值,可以增加或减少流行效果的强度。例如,您可以使用因子 2 来增强效果:

newScore = score * log(1 + 2 * popularity)

一个好的因素可能是 9/m 左右,其中 m 是您期望的中值流行度,因为在这种情况下,“中值文档”的提升(中位数是指它的流行度等于m)将是1(也就是说,它的分数根本不会提高)。

再次强调,这只是一个起点,您必须尝试不同的增强函数,直到找到性能良好的函数。

关于使用现有字段进行 solr 排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54089600/

相关文章:

solr - 如何修复Java RuntimeException:找不到资源'solrconfig.xml'?

java - 尝试使用nutch进行爬网时出错-自己的本地主机名上的java.net.UnknownHostException

java - 如何使用 solrj 将一个文档添加到 solr 索引?

java - 无法让 apache nutch 爬行 - 权限和 JAVA_HOME 可疑

solr - 如何将搜索索引与 MVC 中的模型相关联?

python - Django HayStack 从 URL 获取参数并相应更新默认查询

solr - django-haystack 不会索引我的数据

solr - ckan 本地安装,未配置 solr JSP 支持时出现 500 错误

java - Lucene:仅将带有 OR 的 boolean 查询转换为 AND

mysql - Solr DataImport 编码