Solr Cloud - Запросы по уникальному полю возвращают разные результаты
Я столкнулся с проблемой, когда запрос к нашему поиску Solr будет возвращать различные значения. Однако я запрашиваю идентификатор, который установлен в поле уникального ключа.
Так что в интерфейсе Solr Admin я буду выполнять запрос, как.
Соответствующая информация об ответах ниже.
"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-адрес отличается.
С Debug Query проверено. Вы можете видеть, что разные URL-адреса находятся в GET_FIELDS
раздел.
Почему / как я могу получить различную информацию? Я запрашиваю идентификатор, который помечен как уникальное поле. Из моего понимания никогда не должно быть больше, чем те. Может ли это быть проблемой синхронизации? Я использую запрос интерфейса пользователя Solr с одним выбранным ядром.
Есть ли способ проверить, есть ли в индексе только один документ с таким идентификатором?
ОБНОВИТЬ:
Я запустил фасетный запрос, и этот уникальный результат 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 ответ
Это установка SolrCloud или единая коллекция? Если это облако, вы, скорее всего, получили одну запись в двух разных ядрах. Возможно, из-за роутера или ошибки обновления.
Хорошая новость, вы должны быть в состоянии найти все записи, которые имеют эту проблему, выполнив facet.field = id, facet.mincount = 2. Затем вы можете удалить / повторно вставить их для согласованности.
И нет, вы не должны быть в состоянии оказаться в этом состоянии, поэтому возможны неверная конфигурация, сбой обновления или некоторые принудительные команды для игнорирования уникального требования.