Я использую Solr 3.5.0 с примером сервера под jetty-6.1-SNAPSHOT. Я начал с schema.xml по умолчанию, убраны по умолчанию <field>
определений, а также указан моему собственные, в том числе следующее:Solr: ошибка «отсутствует требуемое поле», когда поле отсутствует?
<field name="content" type="text_general" indexed="false" stored="false" required="true" />**
<field name="title" type="text_general" indexed="false" stored="true" required="true" />
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
Я индексное значение ЛЖИ для content
поля, потому что я пытаюсь использовать это поле в определении copyField позже в схеме. И я сохранил set false, потому что мне не нужно видеть это поле content
в результатах запроса.
Позже в схеме, я эти copyFields определены:
<copyField source="title" dest="text"/>
<copyField source="content" dest="text"/>
А вот пример моих данных:
<add>
<doc>
<field name="id">2-29-56</field>
<field name="title">This is a test</field>
<field name="content">This is some content</field>
</doc>
</add>
я запускаю пример Solr сервер с этой схемой с помощью:
C:\solr\example>java -jar start.jar
Затем я попытаюсь отправить этот образец документа на мой сервер Solr:
C:\solr\example\exampledocs>java -jar post.jar test.xml
Это то, что я получаю обратно:
SimplePostTool: version 1.4
SimplePostTool: POSTing files to http://localhost:8983/solr/update..
SimplePostTool: POSTing file test.xml
SimplePostTool: FATAL: Solr returned an error #400 [doc=2-29-56] missing required field: content
Я пробовал много разных вещей, но если я изменить схему таким образом, что индексированный = «истина» для определения content
поля, он работает. Или, если я верну его обратно в false и установил сохраненный = "true", то он также будет работать. Он всегда терпит неудачу, если индексированные и сохраненные установлены равными false.
Это могло бы иметь смысл, если бы я не определял экземпляр экземпляра, который использует поле содержимого. Комментарии образец схемы даже состояние:
«за лучший размер индекса и поиска производительности, установить„индекс“ложной для всех общих текстовых полей, используйте copyField, чтобы скопировать их в Catchall„текстового поля“, и используйте это для поиска ».
Итак, каков правильный способ сделать это, самый эффективный способ?
Имеет смысл, спасибо! –