Solr Cloud - 查询唯一字段 returns 不同的结果

Solr Cloud - Querying on unique field returns different results

我 运行 遇到一个问题,即对我们的 Solr 搜索的查询将 return 不同的值。但是我正在查询 id,它被设置为唯一键字段。

所以在 Solr Admin 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 不同。

选中调试查询。您可以看到不同的 url 位于 GET_FIELDS 部分。

Why/how 我可以得到不同的信息吗?我正在查询标记为唯一字段的 id。根据我的理解,应该永远不会超过这些。 这可能是同步问题吗?我正在使用 Solr admin UI 查询并选择了一个核心。

有没有办法检查索引中是否只有一个具有该 ID 的文档?

更新:

I 运行 一个方面查询和唯一 returns 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>

这样对吗?这是否解释了我的问题,因为有重复的文档,但如果是这样,为什么没有两个文档得到 returned 而只是不同的数据?

这是 SolrCloud 设置还是单集合设置?如果是云,您很可能最终会在两个不同的核心中获得一条记录。可能是由于路由器或升级错误。

好消息,你应该可以通过执行 facet.field=id, [=22 找到所有有这个问题的记录=]=2。然后你可以 delete/reinsert 它们以保持一致性。

不,你不应该以这种状态结束,所以要么是配置错误,升级失败,要么是一些强制命令忽略了独特的要求。