Подтвердить что ты не робот

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://
4b9b3361

Ответ 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. Он будет просматриваться в текстовом поле (которое состоит из копий других полей).