0

我遇到了一个问题,对 Solr 搜索的查询将返回不同的值。但是我正在查询设置为唯一键字段的 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 在该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>

这是正确的吗?这是否解释了我的问题,因为存在重复的文档,但如果是这种情况,为什么不返回两个文档而不仅仅是返回不同的数据?

4

1 回答 1

1

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

好消息是,您应该能够通过执行facet.field=idfacet.mincount=2找到所有有此问题的记录。然后你可以删除/重新插入它们以保持一致性。

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

于 2015-09-24T19:54:31.567 回答