wake-up-neo.com

Solr Query - HTTP-Fehler 404 undefinierter Feldtext

Ich habe eine Solr-Instanz, die auf meinem Ubuntu-Computer mit dem Standard-Jetty-Server ausgeführt wird, den der Solr-Download enthält. Wann immer ich mit Solr anfange 

Java -Jar start.jar

Der Server startet gut, es wird jedoch immer eine Ausnahme ausgelöst:

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

Wie gesagt, der Server wird immer noch gestartet und ich kann die Solr-Verwaltungsoberfläche sehen. Ich habe mein Schema wie folgt definiert.

<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>

Ich konnte auch ein JSON-Update durchführen - ich habe ein Muster-Datenfeld eingereicht, das akzeptiert wurde. Bis zu diesem Punkt ist alles gut.

Wenn ich versuche, eine Abfrage auszuführen:

http://localhost:8983/solr/select/?q=*:*&version=2.2&start=0&rows=10&indent=on

Alle Daten, die ich zuvor in meinem Beispiel übermittelt habe, werden korrekt zurückgegeben.

In dem Moment, in dem ich versuche, Text zu verwenden, erhalte ich einen HTTP-Fehler 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://
23
Jarrod Nettles

In der Standard-Solr-Konfiguration wurden einige Anforderungshandler mit Standardwerten definiert, die mit dem im Solr-Tarball enthaltenen Standardschema übereinstimmen.

Überprüfen Sie die in solrconfig definierten Anforderungshandler. Möglicherweise stellen <str name="qf"> und andere Konfigurationswerte einige Felder dar, die Sie nicht im Schema definiert haben.

Überprüfen Sie auch Ihre schema.xml, dass das Standardsuchfeld nicht auf text wie folgt festgelegt ist: <defaultSearchField>text</defaultSearchField>

38
hovenko

Ich hatte das gleiche Problem. Falls in der Datei <defaultSearchField> kein solrconfig.xml vorhanden ist, suchen Sie nach dem /select-Handler.

Darin würden Sie so etwas finden

<str name="df">text</str>

Das ist der Täter. df bedeutet das Standardfeld. Standardmäßig und angenehm dumm ist es auf ein Feld mit dem Namen text gesetzt, das viele möglicherweise nicht haben.

Entfernen Sie es und ersetzen Sie es durch ein beliebiges Suchfeld.

47
Arindam

Das Textfeld besteht aus Kopien anderer Felder, wie in der Standardschema.xml (beim Einfügen eines neuen Dokuments) angegeben.

Wenn wir also "df" in der Datei "solrconfig.xml" haben und eine Suche durchführen, ohne das Feld auf der solr-Verwaltungsseite anzugeben, z. B. video. Es wird im Textfeld nachgeschlagen (das sich aus Kopien anderer Felder zusammensetzt).

0
Ababneh A

Ich habe das gleiche Problem, das entweder bei einer 404-Antwort wie oben beschrieben oder als Ausnahme in der Jetty-Stack-Ablaufverfolgung auftritt:

SEVERE: org.Apache.solr.common.SolrException: nicht definierter Feldtext

   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)

Ich habe das defaultSearchField überprüft, das auf "content" gesetzt ist (was für mich in Ordnung erscheint)

Edit: Ich habe in meiner schema.xml die folgende Definition für den Typ text (siehe kein Problem darin)

<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>
0

Dies ist möglicherweise nicht immer der Fall, aber als ich ein ähnliches Problem bekam, stellte sich heraus, dass ein Neustart des Solr-Servers mit restart nicht ausreichend war. Der Server wurde explizit mit dem Befehl stop gestoppt und dann mit dem Befehl start gestartet. Ich brauchte keine Datei zu bearbeiten.

P.S. Mein Problem war, dass nur/clustering für meinen Solr-Kern nicht verfügbar war. 

0
AppB