Вопрос о загрузке изменений в схему - PullRequest
0 голосов
/ 23 апреля 2020

Я новичок в Solr и получил следующую ошибку при добавлении документа через pysolr:

pysolr.SolrError: Solr responded with an error (HTTP 400): [Reason: ERROR: [doc=bc4aa768-6f35-4888-80e0-1578d9971b3c] Error adding field 'periodical_nlm'='2984692R' msg=For input string: "2984692R"]

Я обнаружил, что первое добавленное значение periodical_nlm было 404536.0, поэтому я предположил, что это проблема типа. В Python я затем приводил каждое periodical_nlm явно к строке перед добавлением 2984692R. Однако ошибка сохранилась.

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

(1) Похоже, есть два файла схемы: managed-schema в каталоге для ядра и managed-schema в папке conf ядра. Я предполагаю, что используемая инициализированная схема находится в папке conf?

(2) Что мне обновить, чтобы все прошло гладко? Я попытался добавить следующее в файл схемы в основном каталоге, но ошибка не исчезла:

field name="periodical_nlm" type="string" indexed="true" stored="true" required="false" multiValued="false" />

Нужно ли повторно запустить какой-либо процесс инициализации или добавить что-то в файл conf отдельно?

Большое спасибо и, пожалуйста, дайте мне знать, если вам нужно больше информации. Я работаю на платформе Windows 10 Home x64 (не уверен, что это важно, если есть какие-то вещи из командной строки, которые мне нужно запустить ...).

1 Ответ

1 голос
/ 23 апреля 2020

Пока вы перезагружаете ядро ​​после изменения файла managed-schema в conf, все будет в порядке. Имейте в виду, что вы должны сделать это до индексации контента - поэтому вам может потребоваться очистить индекс, удалив все, затем изменив схему и повторно проиндексировав ваш контент. Изменение схемы не приводит к изменению содержимого, которое уже было проиндексировано.

В противном случае ваше предположение верно, и режим без схемы (где тип определяется форматом первого переданного значения (а не типом - как это обычно не включаются никаким образом, все значения при отправке являются просто строками, поэтому Solr пытается угадать тип, применяя иерархию сопоставления с образцом)) полезно для создания прототипов - при переходе в производство всегда следует определять схему явно, чтобы избежать проблем, как вы видели здесь.

...