我遇到了一个问题,我们的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",
请注意,网址不同。
选中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>
这是对的吗?这是否解释了我的问题,因为有重复的文档,但如果是这样的话,为什么不返回两个文件而不是只返回不同的数据?
答案 0 :(得分:1)
这是SolrCloud设置还是单一收集设置?如果它是云,你最有可能在两个不同的核心中得到一条记录。可能是由于路由器或升级错误。
好消息是,你应该能够通过 facet.field = id , facet.mincount = 2 查找出现此问题的所有记录。然后你可以删除/重新插入它们以保持一致性。
不,你不应该在这种状态下结束,所以有错配置,升级失败或一些强制命令忽略了这个独特的要求。