Solr Query - ошибка HTTP 404 undefined текст поля
У меня есть экземпляр Solr, запущенный на моей машине Ubuntu, с использованием сервера Jetty по умолчанию, с которым поставляется Solr. Всякий раз, когда я запускаю Solr, используя
java -jar start.jar
Сервер запускается нормально, но всегда есть исключение:
INFO: SolrDispatchFilter.init() done
Apr 12, 2012 2:01:56 PM org.apache.solr.common.SolrException log
SEVERE: org.apache.solr.common.SolrException: undefined field text
Как я уже сказал, сервер все равно запустится, и я увижу интерфейс администрирования Solr. Я определил свою схему следующим образом.
<fields>
<field name="id" type="string" indexed="true" stored="true" />
<field name="phraseID" type="int" indexed="true" stored="true" />
<field name="translation" type="string" indexed="true" stored="true" />
</fields>
<uniqueKey>id</uniqueKey>
Я также смог выполнить обновление JSON - я представил образец массива данных, который был принят. До этого момента все в порядке.
Когда я пытаюсь выполнить запрос:
http://localhost:8983/solr/select/?q=*:*&version=2.2&start=0&rows=10&indent=on
Он корректно возвращает все данные, которые я представил ранее в своем примере.
Однако в тот момент, когда я пытаюсь выполнить запрос с использованием текста, я получаю HTTP ERROR 404.
http://localhost:8983/solr/select/?q=fruit&version=2.2&start=0&rows=10&indent=on
--- returns ---
HTTP ERROR 400
Problem accessing /solr/select/. Reason:
undefined field text
Powered by Jetty://
Ответы
Ответ 1
Конфигурация solr по умолчанию определила некоторые обработчики запросов со значениями по умолчанию, которые соответствуют схеме по умолчанию, включенной в tar-архив.
Проверьте обработчики запросов, определенные в файле solrconfig, и вы можете обнаружить, что
<str name="qf">
и другие значения конфигурации включают некоторые поля, которые вы не определили в схеме.
Кроме того, проверьте ваш schema.xml, что поле поиска по умолчанию не установлено на текст следующим образом: <defaultSearchField>text</defaultSearchField>
Ответ 2
У меня была та же проблема.
Если в файле solrconfig.xml
нет <defaultSearchField>
, найдите обработчик /select
.
В этом вы найдете что-то вроде этого
<str name="df">text</str>
Это преступник. df
означает поле по умолчанию, и по умолчанию, и довольно, довольно глупо, устанавливается поле с именем text
, которое многие могут не иметь.
Удалите его и замените его тем, что должно быть полем поиска по умолчанию.
Ответ 3
У меня та же проблема, которая появляется либо на 404-ответ, иногда как описано выше, либо как исключение в трассе стека пристани:
SEVERE: org.apache.solr.common.SolrException: undefined текст поля
at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1330)
at org.apache.solr.schema.IndexSchema.getFieldType(IndexSchema.java:1282)
at org.apache.solr.search.SolrQueryParser.getWildcardQuery(SolrQueryParser.java:234)
at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1414)
Я проверил defaultSearchField, который настроен на "контент" (что кажется мне удобным)
Изменить: у меня в моем schema.xml следующее определение для текста типа (см. без проблем)
<fieldType name="text" class="solr.TextField"
positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1"
catenateWords="1" catenateNumbers="1" catenateAll="0"
splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory"
protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
Ответ 4
Текстовое поле состоит из копий других полей, как указано в файле schema.xml по умолчанию (при вставке нового документа).
Итак, когда мы имеем df "текст" в файле solrconfig.xml, и мы делаем поиск без указания поля на странице администрирования solr, например: video. Он будет просматриваться в текстовом поле (которое состоит из копий других полей).