【发布时间】:2025-12-01 11:15:01
【问题描述】:
我遇到了一个问题,即对 Solr 搜索的查询将返回不同的值。但是我正在查询设置为唯一键字段的 id。
所以在 Solr 管理 UI 中,我将运行类似的查询。
相关响应信息如下。
"response": {
"numFound": 1,
"start": 0,
"maxScore": 7.4537606,
"docs": [
{
"title": [
"ICARDA forced to move"
],
"moduleid_s": "58",
"id": "client1.com.58.1673",
"enddate_dt": "2015-09-25T23:59:00Z",
"url": "mysite.com/item.aspx?id=1673",
"startdate_dt": "2015-09-25T00:00:00Z",
现在多次运行该查询最终会导致不同的响应。
"response": {
"numFound": 1,
"start": 0,
"maxScore": 7.453251,
"docs": [
{
"title": [
"ICARDA forced to move"
],
"moduleid_s": "58",
"id": "client1.com.58.1673",
"enddate_dt": "2015-09-25T23:59:00Z",
"url": "mysiteNewUrl.com/item.aspx?id=1673",
"startdate_dt": "2015-09-25T00:00:00Z",
注意网址不同。
检查了调试查询。你可以看到不同的url在GET_FIELDS部分。
为什么/如何获得不同的信息?我正在查询标记为唯一字段的 id。据我了解,不应该超过这些。 这可能是同步问题吗?我正在使用 Solr 管理 UI 查询并选择了一个核心。
有没有办法检查索引中是否只有一个具有该 ID 的文档?
更新:
我运行了一个方面查询,并且唯一返回 2
<lst name="facet_fields">
<lst name="id">
<int name="client1.com.58.1673">2</int>
与没有问题的人相比。
<lst name="facet_fields">
<lst name="id">
<int name="client1.com.58.163">1</int>
这是对的吗?这是否解释了我存在重复文档的问题,但如果是这种情况,为什么不返回两个文档而不仅仅是返回不同的数据?
【问题讨论】:
-
只有在您重新索引或索引具有相同 ID 的其他文档时才会发生这种情况。
-
@YoungHobbit:所以实际上你可以拥有两个具有相同唯一键字段的文档。我的印象是,如果唯一键字段相同,Solr 只会覆盖。
-
它应该 - 除非你明确告诉它忽略 uniqueKey 约束。我猜这两个索引作业之间的集群布局(或更改的文档路由器)可能发生了变化,导致文档的路由方式不同。
-
@MatsLindh,这就是我的想法。我相信我们最近确实从 4.6 升级到了 Solr 5.3。这可能导致了这个问题。我运行了一些方面查询,请在问题中查看我的更新。