- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Solr 查询中使用 rord()
函数来提高针对“排名”字段的查询结果,使用类似这样的语法:
bf=rord(cur_rank)^1.8
该算法运行良好,但最近 Solr 的变化表明使用 ord() 和 rord() 现在是一个内存消耗。来自 the changelog :
Searching and sorting is now done on a per-segment basis, meaning that the FieldCache entries used for sorting and for function queries are created and used per-segment and can be reused for segments that don't change between index updates. While generally beneficial, this can lead to increased memory usage over 1.3 in certain scenarios:
[...]
2) Certain function queries such as ord() and rord() require a top level FieldCache instance and can thus lead to increased memory usage. Consider replacing ord() and rord() with alternatives, such as function queries based on ms() for date boosting.
它提到了处理基于日期的提升的可能策略,但是对于像“rank”这样的数字怎么样,其中 rank 是一个介于 1 和记录总数之间的数字?
rord() 似乎很理想……还有其他策略吗?
最佳答案
使用基于段的字段缓存的要点是减少加载时间。如果你想在添加了一个新的段(每次提交时都这样做)后获取一个字段的值,你只需要为新添加的段加载一个新的字段缓存。
这对于 ord 和 rord 是不可能的,它们为您提供整个索引的序号而不是单个文档的值。
因此唯一的解决方案是根据字段“cur_rank”的值而不是它的 ord 来计算提升。
这就是日期提升现在的工作方式:它过去使用日期字段的 rord 来计算提升,而现在它使用日期字段值和现在之间的毫秒数。参见 http://wiki.apache.org/solr/SolrRelevancyFAQ (“我怎样才能提高较新文档的分数”)了解更多详情。
关于lucene - 在 Solr 中替换 ord() 和 rord() 函数查询的推荐策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5835994/
我在 Solr 查询中使用 rord() 函数来提高针对“排名”字段的查询结果,使用类似这样的语法: bf=rord(cur_rank)^1.8 该算法运行良好,但最近 Solr 的变化表明使用 or
我是一名优秀的程序员,十分优秀!