2012-07-17 22 views
8

Estoy tratando de utilizar una búsqueda SOLR para algunos registros que tienen FirstName como;SOLR consulta de búsqueda sensibilidad de caso

abcd 
Abcd 
abcD 
ABcd 
abCd 
abCD 

Ahora estoy tratando de hacer una búsqueda con soporte de caracteres comodín. Necesito entender cómo funciona exactamente la búsqueda en términos de distinción entre mayúsculas y minúsculas.

p. Ej. Si paso el parámetro FirstName como ab * Vs Ab *, ¿qué registros se devolverán?

¿Hay alguna manera de hacer/forzar la búsqueda para que sea case-senstive O caso insensible?

Por favor ayuda. Gracias.

Respuesta

6

Depende de cómo defina sus campos en schema.xml. Si usa LowerCaseFilterFactory durante la indexación y la consulta, entonces todas las consultas serán insensibles a las mayúsculas y minúsculas. De lo contrario, será sensible a mayúsculas y minúsculas.

<filter class="solr.LowerCaseTokenizerFactory"/> 
7

Lo configura dentro de su esquema. Por ejemplo:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
<analyzer type="query"> 
<filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
</fieldType> 

significa que el campo se considera minúsculas para las consultas que esto da la impresión de ser de búsqueda entre mayúsculas y minúsculas.

+0

como de Solr 5, esto requerirá un tokenizer - chrismarx

2

De forma predeterminada, un valor se corresponde exactamente con el valor almacenado. Si desea que un campo no distinga entre mayúsculas y minúsculas, la forma habitual es tener un tipo de campo que use un filtro minúsculo, convirtiendo todo el contenido indexado en el mismo caso y prácticamente haciendo que la búsqueda sea insensible (dado que el valor de la consulta también será minúscula))

El contenido de ejemplo hace esto por el 'texto' y los tipos de campo 'text_en':

<filter class="solr.LowerCaseFilterFactory"/> 

Sin embargo, hay algunas áreas particulares en el manejo automagic de en minúscula para consultas comodín puede causar problemas, y MultitermQueryAnalysis was introduced in Solr 3.6 and 4.0 to handle those situations . 3.6 y 4.0 deberían hacer la búsqueda comodín automágicamente de la manera correcta si el campo ya está en minúscula.

Sugeriría minicar el nombre en la consulta (siempre que haya aplicado LowerCaseFilterFactory al indexar también) cuando utilice comodines si no obtiene el comportamiento correcto antes de 3.6.

2

Los campos definidos por defecto en el esquema de solr funcionan de manera muy diferente.

tipo de datos 'string' almacena una palabra como una cadena exacta no completada.

Mientras que 'text_general' normalmente realiza tokenización y procesamiento secundario (como mayúsculas y minúsculas). es muy útil para todos los escenarios cuando queremos unir parte de una oración.

Si el siguiente ejemplo, "Buscar en la oración", está indexado a ambos campos, debemos buscar exactamente la búsqueda en la oración para obtener un resultado del campo de cadena, mientras que devolverá el resultado diferente en caso de text_general.

Aquí el nombre del vendedor se coincidirá exactamente en la cadena de búsqueda, mientras que el nombre del producto se buscará en toda la oración anterior.

Ejemplo:

<field name="seller_name" type="string" indexed="true" stored="true"/> 
<field name="product_name" type="text_general" indexed="true" stored="true"/>