TigerZF
🌐Español

10.6. Consultas soportadas

Zend_Search_Lucene y Java Lucene soportan un potente lenguaje de consultas. Permite buscar términos individuales, frases, rangos de términos; usar comodines y búsqueda difusa; combinar consultas usando operadores booleanos; y así sucesivamente.

Puede encontrar una descripción detallada del lenguaje de consultas en la documentación del componente Zend_Search_Lucene.

A continuación se presentan ejemplos de algunos tipos y estrategias de consulta comunes.

Ejemplo 10.10. Consulta de una sola palabra

hello

Busca la palabra "hello" en todos los campos del documento.


[Note] Campo de búsqueda predeterminado

¡Nota importante! Java Lucene busca únicamente en el campo "contents" de forma predeterminada, pero Zend_Search_Lucene busca en todos los campos. Este comportamiento se puede modificar usando el método Zend_Search_Lucene::setDefaultSearchField($fieldName).

Ejemplo 10.11. Consulta de varias palabras

hello dolly

Busca dos palabras. Ambas palabras son opcionales; al menos una de ellas debe estar presente en el resultado.


Ejemplo 10.12. Requerir palabras en una consulta

+hello dolly

Busca dos palabras; "hello" es obligatoria, "dolly" es opcional.


Ejemplo 10.13. Prohibir palabras en los documentos consultados

+hello -dolly

Busca dos palabras; "hello" es obligatoria, "dolly" está prohibida. En otras palabras, si el documento coincide con "hello", pero contiene la palabra "dolly", no será devuelto en el conjunto de coincidencias.


Ejemplo 10.14. Consulta de frases

"hello dolly"

Busca la frase "hello dolly"; un documento solo coincide si esa cadena exacta está presente.


Ejemplo 10.15. Consulta sobre campos específicos

title:"The Right Way" AND text:go

Busca la frase "The Right Way" dentro del campo title y la palabra "go" dentro del campo text.


Ejemplo 10.16. Consulta sobre campos específicos así como sobre el documento entero

title:"The Right Way" AND  go

Busca la frase "The Right Way" dentro del campo title y la palabra "go" que aparezca en cualquier campo del documento.


Ejemplo 10.17. Consulta sobre campos específicos así como sobre el documento entero (alternativa)

title:Do it right

Busca la palabra "Do" dentro del campo title y las palabras "it" y "right" en todos los campos; cualquier coincidencia individual dará como resultado una coincidencia del documento.


Ejemplo 10.18. Consulta con el comodín "?"

te?t

Busca palabras que coincidan con el patrón "te?t", donde "?" es cualquier carácter único.


Ejemplo 10.19. Consulta con el comodín "*"

test*

Busca palabras que coincidan con el patrón "test*", donde "*" es cualquier secuencia de cero o más caracteres.


Ejemplo 10.20. Consulta de un rango inclusivo de términos

mod_date:[20020101 TO 20030101]

Busca el rango de términos (inclusivo).


Ejemplo 10.21. Consulta de un rango exclusivo de términos

title:{Aida to Carmen}

Busca el rango de términos (exclusivo).


Ejemplo 10.22. Búsquedas difusas

roam~

Búsqueda difusa de la palabra "roam".


Ejemplo 10.23. Búsquedas booleanas

(framework OR library) AND php

Consulta booleana.


Todas las consultas soportadas pueden construirse mediante la API de construcción de consultas de Zend_Search_Lucene. Es más, el análisis de consultas y la construcción de consultas se pueden combinar:

Ejemplo 10.24. Combinar consultas analizadas y construidas

$userQuery = Zend_Search_Lucene_Search_QueryParser::parse($queryStr);

$query = new Zend_Search_Lucene_Search_Query_Boolean();
$query->addSubquery($userQuery, true  /* required */);
$query->addSubquery($constructedQuery, true  /* required */);