Trabajar con consultas Lucene
Con esta nueva funcionalidad podrá crear consultas Lucene complejas, de forma que no estará limitado por los campos actuales del formulario de búsqueda. Pero tenga en cuenta que esto puede ser difícil a menos que sepa 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”. Varios términos pueden combinarse con operadores booleanos para 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 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 en la taxonomía cuyo nombre sea “animals”:
Ventana de terminal context:okm_root AND name:animals
Modificadores de término
Sección titulada «Modificadores de término»Lucene admite distintos modificadores de término para crear búsquedas complejas.
Búsquedas con comodín
Sección titulada «Búsquedas con comodín»Puede usar comodines de un solo carácter o de varios caracteres dentro de los términos.
-
Un solo 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*
Búsquedas por proximidad
Sección titulada «Búsquedas por proximidad»Lucene también permite encontrar palabras que estén dentro de una distancia específica. Para realizar una búsqueda por proximidad, use el símbolo de tilde “~” al final de la frase.
Por ejemplo, para buscar “cat” y “dog” dentro de un margen 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 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:
name:{cat TO horse}Si quiere que estos dos términos se incluyan, use esta consulta:
name:[cat TO horse]Operadores booleanos
Sección titulada «Operadores booleanos»Puede combinar varios términos usando 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 forma que no estará limitado por los campos actuales del formulario de búsqueda. Pero tenga en cuenta que esto puede ser difícil a menos que sepa 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”. Varios términos pueden combinarse con operadores booleanos para 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 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 en la taxonomía cuyo nombre sea “animals”:
Ventana de terminal context:okm_root AND name:animals
Modificadores de término
Sección titulada «Modificadores de término»Lucene admite distintos modificadores de término para crear búsquedas complejas.
Búsquedas con comodín
Sección titulada «Búsquedas con comodín»Puede usar comodines de un solo carácter o de varios caracteres dentro de los términos.
-
Un solo 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*
Búsquedas por proximidad
Sección titulada «Búsquedas por proximidad»Lucene también permite encontrar palabras que estén dentro de una distancia específica. Para realizar una búsqueda por proximidad, use el símbolo de tilde “~” al final de la frase.
Por ejemplo, para buscar “cat” y “dog” dentro de un margen 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 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:
name:{cat TO horse}Si quiere que estos dos términos se incluyan, use esta consulta:
name:[cat TO horse]Operadores booleanos
Sección titulada «Operadores booleanos»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 ningún operador booleano entre dos términos, se usa el operador “OR”. Estas dos consultas son equivalentes:
cat animalY esta otra:
cat OR animalEl operador AND encuentra documentos en los que existen ambos términos. También puede usarse el símbolo “&&” en lugar de la palabra “AND”.
Vamos a buscar documentos que contengan las palabras “cat” y “animal” en el contenido:
cat AND animal+
Este se denomina operador obligatorio y obliga a que el término colocado después del “+” se incluya en los resultados.
Por ejemplo, para buscar documentos que deben contener “animal” y pueden contener “cat”:
+animal catEl operador NOT excluye los documentos que contienen el término después de “NOT”. Puede usarse el símbolo “!” en lugar de la palabra “NOT”.
Por ejemplo, para buscar documentos que contengan “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 documentos que contengan “animal” pero no “cat”:
animal -catAgrupación
Sección titulada «Agrupación»Lucene admite el uso de paréntesis para agrupar cláusulas y formar subconsultas. Esto puede ser muy útil si quiere controlar la lógica booleana de una consulta.
Por ejemplo, para buscar “cat” o “dog” y “animal”, use esta consulta:
(cat OR dog) AND animalEscapar caracteres especiales
Sección titulada «Escapar caracteres especiales»Lucene admite escapar algunos caracteres especiales que forman parte de la sintaxis de consulta usando la barra invertida “\” antes del carácter que se quiere escapar. Esta es la lista actual de caracteres especiales:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \El operador “OR” es el operador de conjunción por defecto: esto significa que si no hay ningún operador booleano entre dos términos, se usa el operador “OR”. Estas dos consultas son equivalentes:
cat animalY esta otra:
cat OR animalEl operador AND encuentra documentos en los que existen ambos términos. También puede usarse el símbolo “&&” en lugar de la palabra “AND”.
Vamos a buscar documentos que contengan las palabras “cat” y “animal” en el contenido:
cat AND animalEste se denomina operador obligatorio y obliga a que el término colocado después del “+” se incluya en los resultados.
Por ejemplo, para buscar documentos que deben contener “animal” y pueden contener “cat”:
+animal catEl operador NOT excluye los documentos que contienen el término después de “NOT”. Puede usarse el símbolo “!” en lugar de la palabra “NOT”.
Por ejemplo, para buscar documentos que contengan “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 documentos que contengan “animal” pero no “cat”:
animal -catAgrupación
Sección titulada «Agrupación»Lucene admite el uso de paréntesis para agrupar cláusulas y formar subconsultas. Esto puede ser muy útil si quiere controlar la lógica booleana de una consulta.
Por ejemplo, para buscar “cat” o “dog” y “animal”, use esta consulta:
(cat OR dog) AND animalEscapar caracteres especiales
Sección titulada «Escapar caracteres especiales»Lucene admite escapar algunos caracteres especiales que forman parte de la sintaxis de consulta usando la barra invertida “\” antes del carácter que se quiere escapar. Esta es la lista actual de caracteres especiales:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \Trabajar con campos de metadatos
Sección titulada «Trabajar con campos de metadatos»Como OpenKM usa caracteres restringidos por Lucene como “:”, el nombre del campo debe sanearse. Por ejemplo, un campo llamado en OpenKM como “okp:consulting.text” debería sanearse como “okp_consulting_text”, sustituyendo los caracteres “:” y “.” por “_”.
okp_consulting_text:value