2012-04-12 9 views
23

Ich habe eine Solr-Instanz auf meinem Ubuntu-Rechner mit dem Standard-Jetty-Server, den der Solr-Download enthält. Immer, wenn ich starten SolrSolr Query - HTTP-Fehler 404 undefinierter Feldtext

java -jar start.jar

Der Server startet in Ordnung, aber es gibt 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 aber der Server starte noch und ich kann die Solr Admin-Oberfläche sehen. Ich habe mein Schema wie folgt definiert.

Ich war auch in der Lage, ein JSON-Update durchzuführen - ich übermittelte ein Beispiel-Array von Daten, die akzeptiert wurde. Bis zu diesem Punkt ist alles in Ordnung.

Wenn ich versuche, eine Abfrage auszuführen:

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

Es gibt richtig die alle Daten, die ich in meiner Probe früher vorgelegt.

jedoch der Moment, ich versuche, Text zur Abfrage 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:// 

Antwort

38

Standard solr Konfiguration hat einige Request-Handler mit Standardwerte definiert, die das Standardschema in der solr Tarball enthalten übereinstimmen.

Überprüfen Sie die in solrconfig definierten Anforderungshandler und Sie werden feststellen, dass <str name="qf"> und andere Konfigurationswerte einige Felder enthalten, die Sie nicht im Schema definiert haben.

Auch Ihre schema.xml überprüfen, dass das Standard-Suchfeld nicht Text wie folgt festgelegt ist: <defaultSearchField>text</defaultSearchField>

+1

Das Problem war das defaultSearchField - es auf "Text" gesetzt, die ich mit dem Texttyp verwechselt. Ich setze das defaultSearchField auf "Übersetzung" (oder was auch immer dein Feldname ist) und es hat perfekt funktioniert. –

+1

In meinem Fall war das Problem ' Text' anstelle von ' Inhalt' in 'solrconfig.xml' (" Inhalt "wird als' defaultSearchField' in festgelegt 'schema.xml') – daftu

+0

Ich suche seit ein paar Tagen nach dieser Antwort, vielen Dank, in der Tat, ich musste diese wahnsinnige Antwort abstimmen, obwohl ich mich frage, wo dies in den Dokumenten erwähnt wurde. –

0

Ich habe das gleiche Problem, das manchmal wie oben beschrieben, entweder auf einer 404 Antwort erscheint oder als Ausnahme in der Mole Stack-Trace:

SCHWEREN: org.apache.solr.common.SolrException: undefined 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) 

überprüfte ich die defaultSearchField, die auf „Inhalt“ gesetzt ist (was für mich in Ordnung scheint)

Edit: ich in meinem schema.xml für Typ Text die folgende Definition haben (kein Problem darin sehen)

<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

Um meinen obigen Beitrag abzuschließen, habe ich eine FeldTupe-Definition von "Text" in meinem Schema, das ist: –

+1

Schauen Sie sich die erste Antwort an. Sie müssen wahrscheinlich Ihre solrconfig.xml bearbeiten. –

46

Ich hatte das gleiche Problem. Falls keine in der solrconfig.xml Datei vorhanden ist, suchen Sie nach dem /select Handler.

Innerhalb dass Sie sich so etwas wie dieses

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

finden, dass der Täter ist. df bedeutet das Standardfeld und es wird standardmäßig und angenehmerweise ziemlich dumm auf ein Feld namens text gesetzt, das viele nicht haben könnten.

Entfernen Sie es und ersetzen Sie es durch das, was Ihr Standardsuchfeld sein soll.

+1

Ihre Lösung ist die einzige, die für mich funktionierte. Vielen Dank! –

+0

@NicYoung Gern geschehen – Arindam

+0

@Arindam in meiner schema.xml ich habe hinzugefügt wie folgt so dass ich alle Felder durchsuchen kann (HOPE ITS CORRECT) Ich folgte Ihrem Kommentar und änderte solrconfig.xml als all_fields. Aber mein Ergebnis zeigt leer was wäre der Grund ????? Bitte hilf mir – sandy

0

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

Also, wenn wir die df "Text" in der solrconfig.xml haben, und wir eine Suche ohne Angabe des Feldes auf der Solr-Admin-Seite wie: Video. Es wird in dem Textfeld nachgeschlagen (das aus Kopien anderer Felder besteht).

Verwandte Themen