Trabajar con consultas Lucene
Con esta nueva funcionalidad podrá crear consultas Lucene complejas, de modo que no estará limitado por los campos actuales del formulario de búsqueda. Pero tenga en cuenta que puede resultar difícil si no sabe cómo escribir estas consultas. Vamos a definir un par de conceptos:
-
Términos: Una consulta se divide en términos y operadores. Un término es una sola palabra como “cat” o “dog”. Se pueden combinar varios términos con operadores booleanos para obtener una consulta más específica. Por ejemplo:
Ventana de terminal cat AND dog -
Campos: Cuando realiza una búsqueda Lucene, puede especificar un campo o utilizar el campo predeterminado. En OpenKM, el campo predeterminado 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
Modificadores de términos
Sección titulada «Modificadores de términos»Lucene admite diferentes modificadores de términos para crear búsquedas complejas.
Búsquedas con comodines
Sección titulada «Búsquedas con comodines»Puede utilizar comodines de un solo carácter y de varios caracteres dentro de los términos.
-
Un carácter: Para realizar una búsqueda con comodín de un solo carácter, utilice 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, utilice el símbolo “*”. Por ejemplo, para buscar “test”, “tests” o “tester”:
Ventana de terminal test*
Búsquedas de proximidad
Sección titulada «Búsquedas de proximidad»Lucene también permite encontrar palabras que se encuentran a una distancia determinada. Para realizar una búsqueda de proximidad, utilice el símbolo de tilde “~” al final de la frase.
Por ejemplo, para buscar “cat” y “dog” a una distancia máxima de 10 palabras entre sí en un documento:
"cat dog"~Búsquedas por rango
Sección titulada «Búsquedas por rango»Las consultas por rango permiten encontrar los documentos cuyos valores de campo se encuentran entre un límite inferior y uno superior especificados. La ordenación se realiza de forma lexicográfica.
Por ejemplo, para buscar los documentos cuyo campo “name” esté entre “cat” y “horse” pero sin incluir estos términos:
name:{cat TO horse}Si desea que estos dos términos se incluyan, utilice esta consulta:
name:[cat TO horse]Operadores booleanos
Sección titulada «Operadores booleanos»Puede combinar varios términos mediante operadores booleanos. Lucene admite “AND”, “+”, “OR”, “NOT” y “-”.
Trabajar con consultas Lucene
Sección titulada «Trabajar con consultas Lucene»Con esta nueva funcionalidad podrá crear consultas Lucene complejas, de modo que no estará limitado por los campos actuales del formulario de búsqueda. Pero tenga en cuenta que puede resultar difícil si no sabe cómo escribir estas consultas. Vamos a definir un par de conceptos:
-
Términos: Una consulta se divide en términos y operadores. Un término es una sola palabra como “cat” o “dog”. Se pueden combinar varios términos con operadores booleanos para obtener una consulta más específica. Por ejemplo:
Ventana de terminal cat AND dog -
Campos: Cuando realiza una búsqueda Lucene, puede especificar un campo o utilizar el campo predeterminado. En OpenKM, el campo predeterminado 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
Modificadores de términos
Sección titulada «Modificadores de términos»Lucene admite diferentes modificadores de términos para crear búsquedas complejas.
Búsquedas con comodines
Sección titulada «Búsquedas con comodines»Puede utilizar comodines de un solo carácter y de varios caracteres dentro de los términos.
-
Un carácter: Para realizar una búsqueda con comodín de un solo carácter, utilice 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, utilice el símbolo “*”. Por ejemplo, para buscar “test”, “tests” o “tester”:
Ventana de terminal test*
Búsquedas de proximidad
Sección titulada «Búsquedas de proximidad»Lucene también permite encontrar palabras que se encuentran a una distancia determinada. Para realizar una búsqueda de proximidad, utilice el símbolo de tilde “~” al final de la frase.
Por ejemplo, para buscar “cat” y “dog” a una distancia máxima de 10 palabras entre sí en un documento:
"cat dog"~Búsquedas por rango
Sección titulada «Búsquedas por rango»Las consultas por rango permiten encontrar los documentos cuyos valores de campo se encuentran entre un límite inferior y uno superior especificados. La ordenación se realiza de forma lexicográfica.
Por ejemplo, para buscar los documentos cuyo campo “name” esté entre “cat” y “horse” pero sin incluir estos términos:
name:{cat TO horse}Si desea que estos dos términos se incluyan, utilice esta consulta:
name:[cat TO horse]Operadores booleanos
Sección titulada «Operadores booleanos»Puede combinar varios términos mediante operadores booleanos. Lucene admite “AND”, “+”, “OR”, “NOT” y “-”.
El operador “OR” es el operador de conjunción predeterminado: esto significa que, si no hay ningún operador booleano entre dos términos, se utiliza el operador “OR”. Estas dos consultas son equivalentes:
cat animalY esta otra:
cat OR animalEl operador AND encuentra los documentos en los que existen ambos términos. También se puede utilizar el símbolo “&&” en lugar de la palabra “AND”.
Busquemos los documentos que contengan tanto “cat” como “animal” en el contenido:
cat AND animal+
Este se denomina operador obligatorio y fuerza que el término situado después del “+” se incluya en los resultados.
Por ejemplo, para buscar los documentos que deben contener “animal” y pueden contener “cat”:
+animal catEl operador NOT excluye los documentos que contienen el término situado después del “NOT”. Se puede utilizar el símbolo “!” en lugar de la palabra “NOT”.
Por ejemplo, para buscar los documentos que contienen “animal” pero no “cat”:
animal NOT catEste operador excluye los documentos que contienen el término indicado después del carácter “-”:
Por ejemplo, para buscar los documentos que contienen “animal” pero no “cat”:
animal -catAgrupación
Sección titulada «Agrupación»Lucene permite utilizar 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” utilice esta consulta:
(car OR dog) AND animalEscapar caracteres especiales
Sección titulada «Escapar caracteres especiales»Lucene permite escapar algunos caracteres especiales que forman parte de la sintaxis de las consultas utilizando la barra invertida “\” antes del carácter que se desea escapar. Esta es la lista actual de caracteres especiales:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \El operador “OR” es el operador de conjunción predeterminado: esto significa que, si no hay ningún operador booleano entre dos términos, se utiliza el operador “OR”. Estas dos consultas son equivalentes:
cat animalY esta otra:
cat OR animalEl operador AND encuentra los documentos en los que existen ambos términos. También se puede utilizar el símbolo “&&” en lugar de la palabra “AND”.
Busquemos los documentos que contengan tanto “cat” como “animal” en el contenido:
cat AND animalEste se denomina operador obligatorio y fuerza que el término situado después del “+” se incluya en los resultados.
Por ejemplo, para buscar los documentos que deben contener “animal” y pueden contener “cat”:
+animal catEl operador NOT excluye los documentos que contienen el término situado después del “NOT”. Se puede utilizar el símbolo “!” en lugar de la palabra “NOT”.
Por ejemplo, para buscar los documentos que contienen “animal” pero no “cat”:
animal NOT catEste operador excluye los documentos que contienen el término indicado después del carácter “-”:
Por ejemplo, para buscar los documentos que contienen “animal” pero no “cat”:
animal -catAgrupación
Sección titulada «Agrupación»Lucene permite utilizar 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” utilice esta consulta:
(car OR dog) AND animalEscapar caracteres especiales
Sección titulada «Escapar caracteres especiales»Lucene permite escapar algunos caracteres especiales que forman parte de la sintaxis de las consultas utilizando la barra invertida “\” antes del carácter que se desea escapar. Esta es la lista actual de caracteres especiales:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \Trabajar con campos de metadatos
Sección titulada «Trabajar con campos de metadatos»Dado que OpenKM utiliza caracteres restringidos de Lucene como “:”, el nombre del campo debe sanearse. Por ejemplo, un campo denominado en OpenKM “okp:consulting.text” debe sanearse como “okp.consulting.text”, sustituyendo el carácter “:” por un único “.”.
okp.consulting.text:value