1. Esquema
Su esquema de Solr está determinada en gran medida por su comportamiento de búsqueda previsto. En su archivo schema.xml, verá un montón de opciones como "texto" y "cadena". Se comportan de manera diferente.
<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
El tipo de campo de cadena es una coincidencia de cadena literal. Funcionaría como ==
en una declaración de SQL.
<fieldtype name="text_ws" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldtype>
El tipo de campo text_ws hace tokenización. Sin embargo, una gran diferencia en el campo text
son los filtros para stop-words y los delimitadores y la carcasa inferior. Observe cómo estos filtros están designados para el índice Lucene y la consulta Solr. Por lo tanto, al buscar en un campo de texto, adaptará los términos de la consulta utilizando estos filtros para ayudar a encontrar una coincidencia.
<fieldtype name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter ..... />
<filter ..... />
<filter ..... />
</analyzer>
</fieldtype>
Al indexar cosas como las noticias, por ejemplo, es probable que quieren buscar nombres de empresas y titulares de manera diferente.
<field name="headline" type="text" />
<field name="coname" type="string" indexed="true" multiValued="false" omitNorms="true" />
El ejemplo anterior permitirá hacer una búsqueda como &coname:Intel&headline:processor+specifications
y recuperar partidos que golpean exactamente historias de Intel.
Si desea buscar una gama
2. Los campos de Resultados
Puede define un conjunto estándar de campos de retorno en su RequestHandler
<requestHandler name="mumble" class="solr.DisMaxRequestHandler" >
<str name="fl">
category,coname,headline
</str>
</requestHandler>
También puede definir el deseado campos en su cadena de consulta, utilizando el parámetro fl
.:
/select?indent=on&version=2.2&q=coname%3AIn*&start=0&rows=10&fl=coname%2Cid&qt=standard
También puede select ranges en sus términos de búsqueda utilizando la sintaxis field:[x TO *]
.Si desea seleccionar ciertos anuncios por su fecha, puede generar una consulta con
ad_date:[20100101 TO 20100201]
en sus términos de búsqueda. (Hay muchas maneras de buscar rangos, estoy presentando un método que usa números enteros en lugar de la clase Fecha.)
¿Sabes dónde puedo encontrar un "manual de referencia" de todas las clases y atributos para estos tipos de campo? –
Normalmente comienzo en el wiki de Solr http://wiki.apache.org/solr/ y los Javadocs para las clases se encuentran aquí: http://lucene.apache.org/solr/api/index.html. –