2010-01-27 17 views
9

Soy nuevo en el uso de Solr, y me falta algo.Consulta de Solr sin especificar los nombres de campo

No he tocado mucho en el esquema de ejemplo, e importé algunos datos de muestra. También configuré LocalSolr, y eso parece estar funcionando bien.

Mi problema es solo con consultar Solr en general. Tengo un documento donde el campo nombre está establecido en tom. Sigo mirando los archivos de configuración, y simplemente no puedo entender dónde estoy yendo mal. Un grupo de campos se indexan y almacenan, y puedo ver los valores en el administrador, pero no puedo consultar para que funcionen correctamente. He intentado varias consultas (http://server.com/solr/select/?q=value), y aquí están los resultados:

**Query:** ?q=tom 
**Result:** No results 

**Query:** q=\*:\* 
**Result:** 10 docs returned 

**Query:** ?q=*:tom 
**Result:** No results 

**Query:** ?q=name:tom 
**Result:** 1 result (the doc with name : tom) 

quiero conseguir el primer caso (?q=tom) de trabajo. Cualquier comentario sobre lo que podría estar yendo mal, y cómo puedo corregirlo, sería apreciado.

Respuesta

13

Conjunto <defaultSearchField> a name en su schema.xml

El <defaultSearchField> es utilizado por Solr al analizar las consultas para identificar qué nombre de campo debe ser buscado en consultas en una explícita el nombre de campo no se ha utilizado.

En su lugar, es posible que desee comprobar (e)dismax.

+0

¡Agradable! Esto era exactamente lo que necesitaba. No vi esta opción antes, y ahora tener un montón de campos de copia apuntando a un gran campo de "texto" tiene sentido. ¡Muchas gracias! –

+0

Lo he cambiado en mi archivo solconfig.xml, estoy usando SOLR 7.2.0 –

0

El paso por el tutorial Solr es definitivamente vale la pena su tiempo: http://lucene.apache.org/solr/tutorial.html

Mi conjetura es que el campo "Nombre" no está indexado, por lo que no puede buscar en ella. Debería cambiar su esquema para hacerlo indexado.

También asegúrese de que su XML se alinee con el esquema. Entonces, si está agregando un campo llamado "nombre" en el xml, pero el esquema no lo conoce, entonces Solr simplemente ignorará ese campo (es decir, no será "almacenado" o "indexado").

Buena suerte

+1

El campo está definitivamente indizado. Además, si no fuera así, no podría hacer algunas de las consultas que enumeré, ¿verdad? Algo como nombre: tom no funcionaría, si entiendo los documentos. –

+0

sí, Mauricio tiene razón, necesita especificar el DefaultSearchField en el solrconfig. Además, si está utilizando DisMax (que permitiría que? Q = tom haga una búsqueda en múltiples campos al mismo tiempo), hay otra configuración llamada "qf" – mlathe

0

Bueno, a pesar de establecer un campo de búsqueda por defecto es bastante útil, no entiendo por qué no sólo tiene que utilizar la sintaxis de consulta Solr:

......./?q=name:tom 

o

..... ../?q= : & fq = nombre: tom

+0

bien, señorita lea el título :-( – Lici

6

me encontré con un problema similar ... a saber múltiples campos he definido (que no existían en el schema.xml) para describir mi documentos, y desea buscar/consultar en el múltiples campos del documento, no solo uno de ellos (como el "nombre" en el ejemplo mencionado anteriormente).

Para lograr esto, he creado un nuevo campo ("campo compuesto"), donde luego pongo/copilo campos definidos (al igual que el campo "texto" en el documento schema.xml que viene con la distribución Solr)Esto resulta en algo como esto:

definición coumpoundfield:

<field name="compoundfield" type="text_general" indexed="true" stored="false" multiValued="true"/> 

defaultSearchField:

<!-- field for the QueryParser to use when an explicit fieldname is absent --> 
<defaultSearchField>compoundfield</defaultSearchField> 

<!-- SolrQueryParser configuration: defaultOperator="AND|OR" --> 
<solrQueryParser defaultOperator="OR"/> 

<!-- copyField commands copy one field to another at the time a document 
    is added to the index. It's used either to index the same field differently, 
    or to add multiple fields to the same field for easier/faster searching. --> 
<!-- ADDED Fields --> 
<copyField source="field1" dest="compoundfield"/> 
<copyField source="field2" dest="compoundfield"/> 
<copyField source="field3" dest="compoundfield"/> 

Esto funciona muy bien para mí, pero no estoy seguro de si este es el mejor forma de hacer una búsqueda de "campo múltiple" ...

¡Salud!

1

La solución actual está en desuso en las nuevas versiones de lucene/Solr. Para cambiar el campo de búsqueda predeterminado o bien utilizar el parámetro df o cambiar el campo que se encuentra en:

<initParams 
path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse"> 
    <lst name="defaults"> 
     <str name="df">default_field</str> 
    </lst> 
    </initParams> 

dentro de la Nota solrconfig.xml

estoy usando un esquema no administrado y Solr 7.0.0 en el momento de escribir

Cuestiones relacionadas