Solr版本5.1.0
文档包含DocValues字段“ ts”以及在排名过程中使用的时间戳。
<field name="ts" type="long" docValues="true" indexed="true" stored="true" multiValued="false"/>
如果我直接在Solr Admin UI中请求文档,我会看到它包含正确的值:
"ts": 1575624481951
但是当我将日志添加到排名方法中时,我看到同一文档的“ ts”值为0。
LeafReader reader = context.reader();
NumericDocValues timeDV = DocValues.getNumeric(reader, "ts");
long timestamp = timeDV.get(doc);
LOG.info("ts: " + timestamp);
日志:
ts:0
问题出在从Solr中删除文档不正确。正在复制下一个动作序列:
我添加了其他日志,发现文档的第一个版本位于一个分片上,第二个版本(具有字段“ ts”)位于另一个分片上。我不太确定为什么会发生这种情况,因为据我所知,Solr应该将同一文档放在同一分片上。但无论如何,它已得到解决,可以在添加第二个版本之前从索引中删除文档。