Ir al contenido

Trabajar con consultas Lucene

Con esta funcionalidad podrá crear consultas Lucene complejas, sin limitarse a los campos actuales del formulario de búsqueda. Pero tenga en cuenta que esto puede resultar difícil a menos que sepa cómo escribir estas consultas. Definamos un par de conceptos:

  • Términos: una consulta se divide en términos y operadores. Un término es una única palabra como “cat” o “dog”. Varios términos pueden combinarse con operadores booleanos para una consulta más específica. Por ejemplo:

    Ventana de terminal
    cat AND dog
  • Campos: al realizar una búsqueda Lucene, puede especificar un campo o usar el campo por defecto. En OpenKM, el campo por defecto contiene el texto extraído del documento. Puede buscar en un campo escribiendo el nombre del campo, seguido de dos puntos “:” y un término. Por ejemplo, esta consulta buscará todos los nodos de la taxonomía cuyo nombre sea “animals”:

    Ventana de terminal
    context:okm_root AND name:animals

Lucene admite distintos modificadores de términos para crear búsquedas complejas.

Puede usar comodines de un solo carácter o de varios caracteres dentro de los términos.

  • Un carácter: para realizar una búsqueda con comodín de un solo carácter, use el símbolo “?”. Por ejemplo, para buscar “text” o “test”:

    Ventana de terminal
    te?t
  • Varios caracteres: para realizar una búsqueda con comodín de varios caracteres, use el símbolo “*”. Por ejemplo, para buscar “test”, “tests” o “tester”:

    Ventana de terminal
    test*

Lucene también permite encontrar palabras que están dentro de una distancia específica. Para realizar una búsqueda de proximidad use el símbolo de virgulilla “~” al final de la frase.

Por ejemplo, para buscar “cat” y “dog” a menos de 10 palabras de distancia entre sí en un documento:

Ventana de terminal
"cat dog"~

Las consultas de rango le permiten encontrar coincidencias con documentos cuyos valores de campo están entre un límite inferior y superior especificados. La ordenación se realiza lexicográficamente.

Por ejemplo, para buscar documentos cuyo campo “name” esté entre “cat” y “horse” pero sin incluir estos términos:

Ventana de terminal
name:{cat TO horse}

Si desea incluir estos dos términos, use esta consulta:

Ventana de terminal
name:[cat TO horse]

Puede combinar varios términos usando operadores booleanos. Lucene admite “AND”, “+”, “OR”, “NOT” y “-”.

El operador “OR” es el operador de conjunción por defecto: esto significa que si no hay un operador booleano entre dos términos, se usa el operador “OR”. Estas dos consultas son equivalentes:

Ventana de terminal
cat animal

Y esta:

Ventana de terminal
cat OR animal

El operador AND encuentra coincidencias con documentos en los que existen ambos términos. El símbolo “&&” también puede usarse en lugar de la palabra “AND”.

Busquemos documentos con las palabras “cat” y “animal” en el contenido:

Ventana de terminal
cat AND animal

+

Este se llama el operador obligatorio y fuerza a que el término situado después del “+” se incluya en los resultados.

Por ejemplo, para buscar documentos que deben contener “animal” y pueden contener “cat”:

Ventana de terminal
+animal cat

El operador NOT excluye los documentos que contienen el término posterior a “NOT”. El símbolo “!” puede usarse en lugar de la palabra “NOT”.

Por ejemplo, para buscar documentos que contengan “animal” pero no “cat”:

Ventana de terminal
animal NOT cat

Este operador excluye los documentos que contienen el término indicado después del carácter “-”:

Por ejemplo, para buscar documentos que contengan “animal” pero no “cat”:

Ventana de terminal
animal -cat

Lucene permite usar paréntesis para agrupar cláusulas y formar subconsultas. Esto puede ser muy útil si desea controlar la lógica booleana de una consulta.

Por ejemplo, para buscar “cat” o “dog” y “animal” use esta consulta:

Ventana de terminal
(cat OR dog) AND animal

Lucene permite escapar algunos caracteres especiales que forman parte de la sintaxis de consulta usando la barra invertida “\” antes del carácter a escapar. Esta es la lista actual de caracteres especiales:

Ventana de terminal
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \

Como OpenKM usa caracteres restringidos por Lucene como “:”, el nombre del campo debe sanearse. Por ejemplo, un campo llamado en OpenKM “okp:consulting.text” debería sanearse como “okp_consulting_text”, reemplazando los caracteres “:” y “.” por “_”.

Ventana de terminal
okp_consulting_text:value