Solr Cloud - 查询唯一字段会返回不同的结果

时间:2015-09-23 17:32:17

标签: solr solrcloud solr5

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

enter image description here

因此,在Solr Admin UI中,我将运行类似。

的查询

enter image description here

相关回复信息如下。

 "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",

请注意,网址不同。

选中Debug Query。您可以看到不同的网址位于GET_FIELDS部分。

为什么/如何获得不同的信息?我正在查询标记为唯一字段的id。根据我的理解,应该永远不会有更多。 这可能是同步问题吗?我正在使用Solr管理UI查询,并选择了单个核心。

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

更新:

我运行了一个facet查询,并且该唯一返回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>

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

1 个答案:

答案 0 :(得分:1)

这是SolrCloud设置还是单一收集设置?如果它是云,你最有可能在两个不同的核心中得到一条记录。可能是由于路由器或升级错误。

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

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