Нужно ли хранить все остальные поля в Solr при использовании обновлений на месте одного поля? - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь добавить в проект функцию полнотекстового поиска. Я не хочу хранить полное содержимое всех документов, поэтому я решил использовать поле store = "false" для "content". Кроме того, есть логическое поле, чтобы указать, что документ удален или нет. Когда я создаю новый документ в Solr, он прекрасно работает. Но когда я обновляю поле is_deleted - «содержимое» оказывается потерянным из индекса, и я больше не могу искать этот документ.

Я нашел сообщение , в котором говорится, что поля не нужно сохранять при обновлении на месте, но у меня это не работает.

Некоторые детали:

Схема:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="_version_" type="plong" indexed="false" stored="false" docValues="true"/>
<field name="is_deleted" type="boolean" indexed="false" stored="false" docValues="true"/>
<field name="content" type="text_general" indexed="true" stored="false" multiValued="true"/>

Добавление тестового документа с помощью обработчика "/ update":

{
"id": "doc1",
"is_deleted": false,
"content": "SEARCH ME"
}

Обновить документ:

{
"id": "doc1",
"is_deleted": {"set": true}
}

Использование Solr v 7.5.0.

Solr Документация по обновлению на месте ничего не говорит о необходимости сохранять все поля для этого типа обновления.

1 Ответ

0 голосов
/ 08 ноября 2018

Я нашел решение. Это была моя ошибка - я считал логическое поле числовым. Вот почему обновление на месте у меня не сработало (потому что Solr сделал обычное атомарное обновление).

Поскольку я изменил поле is_deleted с логического на int, все работает правильно, и я не теряю данные из content при обновлении is_deleted.

Итак, ответ: Solr не нужно сохранять все поля при использовании обновления на месте.

Спасибо EricLavault за упоминание о типе поля. Это очень помогло)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...