Problema Lucene con filtros con guión y punto

cancel
Showing results for 
Search instead for 
Did you mean: 
joseacc
Member II

Problema Lucene con filtros con guión y punto

Buenas,

He detectado un problema al realizar consultas Lucene filtrando con guión o con punto.

Os pongo en situación con un ejemplo.

La definición del metadato es …
<property name="reg:codigo">
<title>Código</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>

Ejemplos de valores de ese metadato…
Z-2010-00001
Z-2010-00002
Z-2010-00003

Mi implementación de búsqueda Lucene con java…
SearchParameters sp = new SearchParameters();
sp.setLanguage(SearchService.LANGUAGE_LUCENE);

String query = new String("PATH:\"/app:company_home/st:sites/cm:misitio//*\" AND @reg\\:codigo:\"Z-2010-*\"");
ResultSet resultsLucene = webScriptHelper.getServices().getSearchService().query(sp);

Con el filtro  @reg\\:codigo:\"Z-2010-*\" no me devuelve ningún registro, sin embargo con el filtro @reg\\:code:\"Z-2010-0*\" si me devuelve.

Parece que si pongo el asterísco junto al guión o un punto el filtro no trabaja. He probado con @reg\\:codigo:\"Z\-2010\-*\" pero nada.

Tengo configurado el idioma Español en Alfresco y uso la versión Community v3.2r (build 2384, schema=3003) - Entorno tomcat preconfigurado.

¿Alguna idea?

Un saludo
8 Replies
baskeyfield
Member II

Re: Problema Lucene con filtros con guión y punto

Buenas,

Yo tuve un problema similar, y era por utilizar el analizador en castellano, ya que las búsquedas las hace con el analizador standard.

Puedes probar esto:

Edita : WEB-INF/classes/alfresco/model/dataTypeAnalyzers_es.properties

Comenta las dos sentencias de los analizadores y pon:

d_dictionary.datatype.d_text.analyzer=org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser
d_dictionary.datatype.d_content.analyzer=org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser

Despues en global.repository.properties pon un:
index.recovery.mode=FULL

Y reinicia. Comprueba si te sigue fallando el problema con las búsquedas lucene.

Un saludo.
joseacc
Member II

Re: Problema Lucene con filtros con guión y punto

Buenas,

Antes de nada agradecerte tu respuesta.

Eso mismo ya lo probé cuando me documenté del problema pero no me dió resultado. No sé si la versión de Alfresco puede ser el problema. Cuando detectaste el problema, ¿cuál era la versión que usabas?

Por cierto, también me ocurre con filtros con barras inclinadas a la derecha "/*".

Un saludo
baskeyfield
Member II

Re: Problema Lucene con filtros con guión y punto

Buenas,

Mi versión era la 3.2 Community.

¿Desde la búsqueda avanzada te funciona?

¿Y poniendo esa consulta de lucene desde el administrador de nodos?

Saludos.
joseacc
Member II

Re: Problema Lucene con filtros con guión y punto

Buenas,

Ya dí con la solución.

Si no se usan las comillas en el filtro, la búsqueda se hace correctamente. Por ejemplo, @reg\\:codigo:Z-2010-*

Pensaba que las comillas eran necesarias para filtrar metadatos de tipo string pero parece que no.

Un saludo y gracias
venzia
Senior Member

Re: Problema Lucene con filtros con guión y punto

Si no me equivoco, al usar comillas estas realizando una busqueda exacta .. cosa incompatible con el uso de wildcards (al final busca el * como un caracter mas de la cadena y no como un comodín).
Saludos,
joseacc
Member II

Re: Problema Lucene con filtros con guión y punto

Buenas Javier,

Si filtro por @reg\\:codigo:"Z-2*" si me devuelve registros pero si filtro @reg\\:codigo:"Z-*" no me devuelve nada.

Por lo tanto, lo que me planteas de que las comillas representan una búsqueda exacta en el primer filtro no me debería devolver nada pero si lo hace.

Un saludo
venzia
Senior Member

Re: Problema Lucene con filtros con guión y punto

En cuanto a las comillas puede que tengas razon, por eso digo "si no me equivoco" (cosa que pasa :mrgreen: ) .. aunque me suena haberlo leido recientemente.
Echale un vistazo al siguiente post http://forums.alfresco.com/en/viewtopic.php?t=4776
Ten en cuenta que lucene "tokeniza" algunos metadatos tipo text por defecto, como el nombre, titulo y descripción.
Esto lo que hace es desglosar string en partes que el sistema entiende lógicas. Luego esta el tema de los stammps, que viene a ser el procedimiento por el cual lucene almacena las palabras raiz para permitir el uso de derivadas. Por ejemplo, si subes un documento que recoge en el titulo España, lucene guardará como palabra raiz Españ, de esta forma te devolvería el documento si buscas por España, Español, Española, .. esto último no es tu caso (además que el stammp debe ser definido si no me equivoco) .. de todas forma ahi queda.
La pena es q ahora mismo no esta el wiki disponible, creo que habia material interesante al respecto .. a ver si recuerdo luego echarle un vistazo y traer estos articulos.
Te dejo un post en el que cesar comenta algun detalle interesante http://forums.alfresco.com/es/viewtopic.php?f=11&t=2295&p=9168&hilit=lucene#p9168
Saludos y suerte!
joseacc
Member II

Re: Problema Lucene con filtros con guión y punto

Mucha gracias Javier.

Le echo un vistazo a todo y os cuento. De todas formas he puesto un ticket en el JIRA al respecto, a ver si algún gurú de Alfresco me ilumina.