我正在使用" solr.RandomSortField
"基于传递的随机种子随机排序搜索结果。它工作正常并为相同的随机种子密钥提供相同的顺序。
问题是:
通过在运行时使用API创建/删除doc来更改索引版本。然后,随机顺序也会针对新版本和旧版本之间的相同密钥进行更改。
通过在谷歌搜索,我开始了解" RandomSortField"使用索引版本所以当索引版本改变时,排序顺序也会改变。
有没有办法从随机排序中排除索引版本或将索引版本传递给我的查询以搜索旧版本而不是新的更新版本,并在分页搜索结果时获得相同的顺序。
当订单发生变化时,主要是在分页时遇到问题。在某个页面后得到重复的结果。
答案 0 :(得分:0)
您是否尝试删除(int)top.getVersion();
?
使用RandomSortField是一个模块/插件,可在此处找到:https://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_5_4_1/solr/core/src/java/org/apache/solr/schema/RandomSortField.java
能够获得可以持久化分页的随机结果非常有用。但是如果你有一个经常更新的索引,那么你将失去你的随机排序顺序,因为它依赖于索引版本。要解决这个问题,你可以删除我上面写的那行,或者你甚至可以简单地说:
return fieldName.hashCode();
。
你需要把它变成你自己的自定义插件,比如jarfile或者你想要的任何东西,然后把它加载到同一个命名空间中。