La página de la Búsqueda Experta es alcanzada a través de un enlace en la página Búsqueda Avanzada. La consulta debe escribirse en la pantalla de entrada llamada Constructor de búsqueda. Hacer clic en el botón Ver los resultados permite visualizar los resultados. El botón Buscar permite únicamente de mostrar, en el historial situado bajo el constructor de búsqueda, el número de ítems encontrados.
Cada búsqueda está registrada, un historial de sus diferentes consultas está conservado.
Puede combinar sus búsquedas haciendo clic en el identificador de cada consulta seleccionada (#n).
A partir de la segunda consulta añadida en la zona de búsqueda combinatoria, deberá especificar el operador booleano entre las consultas (OR, AND o NOT. Hacer clic en el botón Combinar permite visualizar los resultados.
Cómo escribir las consultas en el constructor?
La aplicación utiliza el motor de búsqueda Elasticsearch 5 que ofrece múltiples posibilidades: combinación de títulos de campos con los operadores booleanos o de proximidad, uso de expresiones regulares, de la búsqueda difusa, o de las funcionalidades que aumentan la pertinencia.
Si la consulta está escrita en el constructor sin especificar un campo determinado, la búsqueda se efectúa sobre “todos campos” del registro. La consulta se analiza como una serie de términos y operadores. Un término puede ser una sola palabra — nuclear
— o una frase entre comillas — "nuclear power"
. La búsqueda se hace entonces poniendo a prueba la presencia de todos los términos y en el orden indicado, es decir el primer término entonces el segundo (término1término2
).
Cuidado: es recomendable evitar los “copiar y pegar” de términos o expresiones provenientes de editores de texto ya que esta operación arriesga desnaturalizar las comillas que, mal interpretadas por el motor de búsqueda, conducirán a resultados aberrantes.
1. Uso de nombres de campos
Si se desea buscar – nuclear
o power
– en el título se hará la búsqueda:
ti.\*:(nuclear
OR power
)
o simplemente
ti.\*:(nuclear power
)
puesto que el operador por defecto que vincula los términos es “OR”.
Para buscar exactamente "Smith John"
en el campo autor, se escribirá:
au.\*:"Smith John"
Para ir más lejos, Véase: Lista de los campos consultables en búsqueda experta
2. Caracteres reservados
Algunos caracteres son utilizados para el tratamiento de las consultas por el motor. Estos caracteres son: + - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /
Si desea hacer una búsqueda que contenga uno se debe entonces escaparlo con el carácter backslash (barra diagonal inversa) (\
).
Por ejemplo, buscar (1+1)=2
sólo será posible bajo la forma
\(1\+1\)\=2
.
Olvidar de escaparlos conducirá a un error de sintaxis y a una consulta que no va a funcionar.
3. Operadores booleanos
Por defecto todos los términos son opcionales siempre que uno a lo menos sea encontrado. Una búsqueda del estilo nuclear power plant
permitirá encontrar los documentos que contienen por lo menos nuclear
o power
o plant
porque el operador por defecto es “OR”. Elasticsearch acepta los operadores booleanos habituales “AND”, “OR” y “NOT”. Pero la utilización de estos operadores no es tan evidente que puede parecer al principio. “NOT” prima sobre “AND”, que prima sobre “OR”.
Es posible colocar grupos de palabras entre paréntesis. Entre estos términos, el operador aquí es el operador por defecto, “OR”.
La utilización de paréntesis permite formar subconsultas. En el siguiente ejemplo:
((nuclear
AND plant
) OR (power
AND plant
) OR plant
)
el término plant
se asocia a nuclear
o power
o a ningún término.
También es posible formular las consultas con los operadores “+” y “–”; el operador “+” indica que el término debe ser presente y el operador “–” que el término no debe ser presente. En ausencia de estos operadores, los términos son facultativos.
Con estos operadores, la consulta anterior se escribirá:
nuclear power
+plant
–reactor
plant
debe ser presente, reactor
no debe ser presente y nuclear
o power
o nuclear power
pueden ser presentes.
4. Búsqueda por proximidad
Mientras que una búsqueda por frase (por ejemplo "nuclear power"
) supone de encontrar todos los términos exactamente en el mismo orden, una búsqueda por proximidad permite aceptar una distancia más grande entre los términos o un orden diferente.
En el ejemplo siguiente :
"clad material"
~3
los términos clad
y material
podrán ser separados por tres términos al máximo. La distancia entre los términos siendo superior a 2, el orden de los términos no se mantiene. En los resultados de la consulta, podría haber documentos correspondientes, por ejemplo, a "material from clad"
.
5. Búsqueda difusa
El operador de búsqueda difusa “~” permite de buscar términos parecidos con a lo sumo dos cambios, ya sea la inserción, la supresión o sustitución de un solo carácter, o la transposición de dos caracteres adyacentes. Opera a partir de la tercera letra de la palabra.
Por ejemplo, einstien
~ le permitirá encontrar los registros con einstein
.
Por defecto el número de cambios efectuados en la palabra es 2 al máximo, pero es posible buscar las posibilidades de adición, de supresión o de sustitución de una sola letra. En este caso será necesario especificarlo, como en el siguiente ejemplo:
AISI304
~1 le permitirá encontrar los aceros de tipo AISI304L
, AISI300
, y AISI302
.
Mientras que una búsqueda con:
AISI304
~2 ampliará la búsqueda permitiendo una adición o una sustitución de 2 caracteres y permitirá encontrar otros aceros, como los AISI316
, AISI321
, AISI347
, AISI1045
etc …
6. Búsqueda por intervalos
Un intervalo puede ser especificado para un campo de tipo fecha, numérico o cadena de caracteres. Un intervalo inclusivo se indica por corchetes [min TO max]
y un intervalo exclusivo por llaves {min TO max}
.
Por ejemplo, para buscar los documentos cuyas fechas de publicación son anteriores a 2012
, se escribirá:
py.\*:{* TO 2012
)
Las llaves y los corchetes pueden combinarse:
py.\*:[2010
TO 2017
} tendrá como resultado los registros con fechas de publicación 2010
, 2011
, 2012
, 2013
, 2014
, 2015
y 2016
.
Lo que se puede escribir con los operadores booleanos:
py.\*:(>=2010
AND <2017
)
o con los operadores “+” y “–”
py.\*:(+>=2010
+<2017
)
Un intervalo cuyo un límite no es fijado puede escribirse:
py.\*:>2010
py.\*:>=2010
py.\*:<2010
py.\*:<=2010
Para los documentos cuyas fechas de publicación son respectivamente posteriores a 2010
, o superiores o iguales a 2010
, anteriores a 2010
o en el último caso inferiores o iguales a 2010
.
7. Aumentar la pertinencia
El operador llamado boost, “^”, permite de hacer un término mâs pertinente que un otro. Por ejemplo si quiere encontrar todos los documentos tratando de fuentes de energías renovables, pero si está especialmente interesado por la energía geotérmica, se escribirá:
"geothermal energy"
^4
La estrategia de búsqueda siguiente:
ti.\*:"renewable energy sources"
OR ti.\*:"geothermal energy"
^4
permitirá mostrar en primer lugar los registros relativos a la energía geotérmica.
El valor por defecto del boost es 1. Los valores superiores a 1 aumentan la pertinencia del término buscado en los resultados; mientras que los valores comprendidos entre 0 y 1 la reducen. Los valores del boost pueden ser decimales, pero hay que poner un punto en lugar de una coma (por ejemplo: 0.2). El boost puede también aplicarse a frases o grupos.
8. Utilización de expresiones regulares
Son cadenas de caracteres que utilizan una sintaxis específica para describir cadenas de caracteres posibles. Según la sintaxis utilizada, es posible repetir cero, una o varias veces cadenas de caracteres de una palabra, lo que conduce a definir un conjunto de palabras cuya ortografía es próxima. Las expresiones regulares utilizadas en las ecuaciones de búsqueda permiten encontrar resultados pese a los errores de ortografía y deben ser encapsuladas con barras inclinadas, de la siguiente manera:
au.\*:/joh?n(ath[oa]n)/
Para ir más lejos, Véase: Búsqueda por expresiones regulares
Indices y subíndices
Cada indice utilizado en la búsqueda simple, avanzada o experta, ha sido calibrado con subíndices para facilitar la búsqueda y permitir encontrar los documentos, pese a, por ejemplo, errores de entrada en la consulta.
Los subíndices son “fold”, “rich”, “stem” y “raw”.
fold separa las palabras del texto, las pone en minúsculas y convierte todos los caracteres en sus equivalentes ASCII.
rich separa las palabras del texto, sin hacer ningún procesamiento adicional.
stem separa las palabras del texto y les aplica un procesamiento de stemming según el algoritmo de Porter.
raw no hace ninguno procesamiento.
Cada campo incluye uno o más subíndices. Las búsquedas “estándar” utilizan la parametrización “estándar” y la consulta se hace sobre todos los subíndices previstos. En sintaxis Elasticsearch, la estrella indica que todos los subíndices son interrogados.
En la búsqueda experta, por ejemplo,
ti.\*
los subíndices “fold”, “rich”, y “stem” serán interrogados porque han sido parametrizados para el índice “ti”.
Para ir más lejos, Véase: Lista de índices y de subíndices
Es posible hacer consultas especificando un subíndice preciso, a condición de que éste haya sido parametrizado para el índice interrogado. En este caso la sintaxis Elasticsearch será, por ejemplo, para una búsqueda con el subíndice “rich” en el título:
ti.rich:”NaCl”
La utilización del índice “stem” permitirá recuperar documentos con nacl
, Nacl
o NACL
en el título.
Para utilizar los subíndices con un grupo de palabras hay que buscar con la expresión exacta, para evitar que el motor de búsqueda interprete el espacio entre palabras como un “OR”.
ti.fold:"BWR reactor"