#solr
#solr
Вопрос:
Я заставил свой SOLR работать, и он работает прилично, но я понятия не имею, что такое управляемая схема, поскольку я использовал версию по умолчанию, в которую я добавил несколько строк, которые мне нужны для моего случая
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="name" type="text_general" indexed="true" stored="true" default="" />
<field name="brand_id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="brand_name" type="text_general" indexed="true" stored="true" default="" />
<field name="type" type="string" indexed="true" stored="true" required="true" default="0" />
Я не могу включить полный файл, потому что он равен 700 строкам…
но здесь есть полный xml http://pastebin.com/Z9nc36QD
должен ли я сохранять все в качестве примера по умолчанию? понятия не имею… у вас есть пример типичного файла схемы?
Ответ №1:
Предполагается, что вы используете API схемы Solr. Более подробную информацию можно найти здесь: https://lucene .apache.org/solr/guide/7_2/schema-api.html
Это в основном означает, что вы отправляете curl -X POST
(на локальный хост) из оболочки для редактирования файла.
Пример:
:curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field-type" : {
"name":"myNewTxtField",
"class":"solr.TextField",
"positionIncrementGap":"100",
"analyzer" : {
"charFilters":[{
"class":"solr.PatternReplaceCharFilterFactory",
"replacement":"$1$1",
"pattern":"([a-zA-Z])\\1 " }],
"tokenizer":{
"class":"solr.WhitespaceTokenizerFactory" },
"filters":[{
"class":"solr.WordDelimiterFilterFactory",
"preserveOriginal":"0" }]}}
}' http://localhost:8983/solr/gettingstarted/schema`
Личный комментарий
Сейчас 2018 год, на самом деле должен быть просто веб-интерфейс из существующей консоли администратора для создания и выдачи этих команд localhost. Я понимаю, что все может стать сложнее, если есть хранитель зоопарка, но базовое исследование на одном сервере должно быть тривиальным, а в настоящее время это не так. Этот подход показал бы форматированную curl
команду, чтобы обучить новых разработчиков правильному использованию.
Разработчики должны перевести xml из документации, подобной этой, в правильный json для публикации.
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true"
words="stopwords.txt" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory"
synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory"
synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Комментарии:
1. Большое спасибо! Это было очень полезно. 🙂
Ответ №2:
Предполагается, что управляемой схемой можно управлять через API схемы, а не путем редактирования имеющихся файлов (которые содержат предупреждение об этом). The schema.xml файл считывается только один раз при первом запуске для создания начальной схемы, любые изменения после этого должны быть выполнены через Schema API.
Если вы хотите использовать schema.xml файл, подобный старым версиям Solr, работает без какой-либо поддержки API схемы, вы можете использовать ClassicIndexSchemaFactory
в своем solrconfig.xml досье. Смотрите Определение фабрики схемы:
<schemaFactory class="ClassicIndexSchemaFactory"/>
Альтернативой использованию управляемой схемы является явная настройка ClassicIndexSchemaFactory. ClassicIndexSchemaFactory требует использования schema.xml конфигурационный файл и запрещает любые программные изменения Схемы во время выполнения. The schema.xml файл должен быть отредактирован вручную и загружается только при загрузке коллекции.
Вам нужно сохранить только те части схемы, которые вы фактически используете, а пример схемы (в зависимости от того, с какой схемы начинает пользователь) обычно будет содержать много-много полей и типов полей, которые вам не нужны. Их можно удалять до тех пор, пока они не понадобятся, а типы полей можно настроить, чтобы включить нужные функции.
Однако помните, что изменение схемы потребует переиндексации содержимого, чтобы изменения были видны при поиске.
Точный дизайн схемы — это то, с чем вам придется работать и экспериментировать, чтобы вы могли получить профиль запроса и функции для сопоставления, которые вам нужны.