排名期间字段阅读不正确

问题描述 投票:2回答:1

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 solrcloud
1个回答
0
投票

问题出在从Solr中删除文档不正确。正在复制下一个动作序列:

  1. 首先将文档添加到Solr,而没有字段“ ts”。
  2. 再次添加了应用程序文档中的某些操作之后,但字段为“ ts”。
  3. 当Solr尝试对该文档进行排名时,没有此字段。

我添加了其他日志,发现文档的第一个版本位于一个分片上,第二个版本(具有字段“ ts”)位于另一个分片上。我不太确定为什么会发生这种情况,因为据我所知,Solr应该将同一文档放在同一分片上。但无论如何,它已得到解决,可以在添加第二个版本之前从索引中删除文档。

© www.soinside.com 2019 - 2024. All rights reserved.