2012-04-12 9 views
23

Tengo una instancia de Solr ejecutándose en mi máquina Ubuntu usando el servidor Jetty predeterminado que viene con la descarga Solr. Siempre que empiezo Solr usandoSolr Query - error HTTP 404 texto de campo indefinido

java-jar start.jar

El servidor comienza bien, pero siempre hay una excepción lanzada:

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 

Como ya he dicho, sin embargo, el servidor Todavía empiezo y puedo ver la interfaz de administración de Solr. Definí mi esquema de la siguiente manera.

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

También pude realizar una actualización de JSON: presenté una matriz de muestra de datos que se aceptó. Hasta este punto todo está bien.

Cuando intento ejecutar una consulta:

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

correctamente devuelve todos los datos que presenté en mi muestra anterior.

Sin embargo, el momento en que trato de consulta utilizando texto, recibo un error HTTP 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:// 

Respuesta

38

configuración por defecto Solr ha definido algunos controladores de solicitudes con valores predeterminados que coinciden con el esquema predeterminado incluido en el paquete de archivos Solr.

Compruebe los controladores de solicitudes definidos en solrconfig y puede encontrar que <str name="qf"> y otros valores de configuración incluyen algunos campos que no ha definido en el esquema.

Además, revise su schema.xml, que el campo de búsqueda por defecto no está establecido en texto así: <defaultSearchField>text</defaultSearchField>

+1

El problema fue defaultSearchField: está configurado en "texto", lo cual confundí con el tipo de texto. Configuré defaultSearchField para usar "translation" (o cualquiera que sea su nombre de campo) y funcionó perfectamente. –

+1

En mi caso, el problema era ' text' en lugar de ' contenido' en 'solrconfig.xml' (" content "está establecido como' defaultSearchField' en 'schema.xml') – daftu

+0

He estado buscando esta respuesta por un par de días, muchas gracias, de hecho tuve que votar esta asombrosa respuesta, aunque me pregunto dónde se ha mencionado esto en los documentos. –

0

tengo el mismo problema que aparece ya sea en una respuesta 404 veces como se describió anteriormente o como una excepción en el seguimiento de pila amarre:

GRAVES: org.apache.solr.common.SolrException: texto del campo indefinido

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) 

he comprobado la defaultSearchField que se fija para el "contenido" (que parece que está bien para mí)

Editar: Tengo en mi schema.xml la siguiente definición de tipo texto (ver ningún problema en ella)

<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

Para completar mi publicación anterior, tengo una definición fieldTupe de "texto" en mi esquema que es: –

+1

Mire la primera respuesta. Probablemente necesites editar tu solrconfig.xml. –

46

Tuve el mismo problema. En caso de que no haya <defaultSearchField> en el archivo solrconfig.xml, busque el controlador /select.

Dentro de que encontraría algo como esto

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

Ese es el culpable. df significa el campo predeterminado y, de forma predeterminada, y de manera agradable, bastante estúpida, se establece en un campo llamado text que muchos pueden no tener.

Quítelo y reemplácelo con lo que sea su campo de búsqueda predeterminado.

+1

Su solución es la única que funcionó para mí. ¡Gracias! –

+0

@NicYoung De nada – Arindam

+0

@Arindam en mi schema.xml He añadido como este para que pueda buscar todos los campos (HOPE ITS CORRECT) seguí su comentario y cambié solrconfig.xml como all_fields. Pero mi resultado muestra vacío cuál sería la razón ????? por favor, ayúdame – sandy

0

El campo de texto se compone de copias de otros campos, como se especifica en el esquema predeterminado.xml (al insertar un nuevo documento).

Entonces, cuando tenemos el df "texto" en el solrconfig.xml, y hacemos una búsqueda sin especificar el campo en la página de administración de Solr, como: video. Se buscará en el campo de texto (que está compuesto por copias de otros campos).