Lucene no encuentra resultados que contienen espacios

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

Lucene no encuentra resultados que contienen espacios

Hola, 
Estoy realizando una búsqueda a partir de 2 valores, estos valores a veces contienen espacios. Si los valores no contienen espacios me devuelve el resultado correctamente, en cambio si contiene espacios no me devuelve nada. 

Ejemplo:

var numFactura = args.nFact;
var cif = args.cPro;

var qpath = "+PATH:\"app:company_home//*\"";
var qcontent = " +@\\{http\\://www.alfresco.org/model/content/1.0\\}content.mimetype:application/pdf";
var qnumFact = " +@fra\\:NumFactura:" + numFactura;
var qcifPro = " +@fra\\:CIF:" + cif;
var strq = qpath + qcontent + qnumFact + qcifPro;

var content = search.luceneSearch(strq);‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

He probado algunas soluciones que proponen en otros post como utilizar la codificación ISO9075Encode pero sigue sin funcionar.

var queryEncoded = search.ISO9075Encode(strq);‍‍
var content = search.luceneSearch(queryEncoded);‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

O pasar solamente los valores.

numFactura = search.ISO9075Encode(numFactura);
cif = search.ISO9075Encode(cif);‍‍

Pero sigo sin recibir resultados. 
¿Alguna idea de porque me esta pasando esto?

Muchas gracias.

23 Replies
douglascrp
Advanced II

Re: Lucene no encuentra resultados que contienen espacios

Hola.

Tú puedes intentar poner el valor como sigue

var qcifPro = " +@fra\\:CIF:'" + cif + "'";

Haciendo así, el valor exacto sendrá buscado.

magarcia_sm
Active Member II

Re: Lucene no encuentra resultados que contienen espacios

Gracias por la respuesta Douglas, 

He probado lo que me comentas pero sigue sin devolver resultados. De esta forma no me devuelve nada ni siquiera pasandole a los parámetros valores sin espacios.

douglascrp
Advanced II

Re: Lucene no encuentra resultados que contienen espacios

Tu deberias intentar tu codigo en Node Browser.

Creo que esto va a ayudar te.

Puedes tambíen intentar usar alfresco fts query.

douglascrp
Advanced II

Re: Lucene no encuentra resultados que contienen espacios

Un ejemplo de alfresco fts

var q = 'TYPE:"con:documentoEmpregado";
var def = { query: q, store: 'workspace://SpacesStore', language: 'fts-alfresco'};

var array = search.query(def);

Entonces tu puedes acceder los nodes en el array.

cesarista
Customer

Re: Lucene no encuentra resultados que contienen espacios

Buenas:

Puedes hacer una búsqueda sencilla por una de las partes del CIF por ejemplo (una de las partes separadas por el o los espacios) ? Si no te encuentra nada puedes tener problemas con el indexador.

En el caso de que te encuentre resultados, comprobaría también la propiedad tokenized de los campos de tu modelo de contenido factura que van a tener espacios. Esta propiedad se encarga de seleccionar si tokeniza (parte en cachitos) el valor del metadato y lo guarda como subpartes (true), el metadato completo únicamente (false), o los dos (both). Un caso típico:

TipOfTheDay: Don't tokenize when using wildcards... - Silvion 

Saludos.

--C.

magarcia_sm
Active Member II

Re: Lucene no encuentra resultados que contienen espacios

Hola Douglas, 

He probado lo que me comentabas utilizando fts y me sigue pasando lo mismo, si el valor que le paso contiene espacios no devuelve resultados, en cambio si el valor es una cadena sin espacios si me encuentra resultados...

magarcia_sm
Active Member II

Re: Lucene no encuentra resultados que contienen espacios

Hola Cesar, gracias por tu respuesta. 
Probé a realizar la búsqueda por una parte del CIF como me comentas y si que me devuelve resultados, por lo que probé a establecer el parámetro "tokenised" a false de la siguiente manera como aparece en el post del enlace e hice un full reindex, pero aún después de haber hecho todo esto sigue sin devolver resultados al realizar una búsqueda si el valor de la búsqueda contiene espacios.

<property name="fra:CIF">
    <title>CIF Empresa Emisora</title>
    <type>d:text</type>
    <mandatory>true</mandatory>
    <index enabled="true">
       <tokenised>false</tokenised>
    </index>
</property>
cristinamr
Advanced

Re: Lucene no encuentra resultados que contienen espacios

Buenas. Una pregunta muy básica: ¿A través de buscador te devuelve resultados con espacios? Es para descartar otros posibles problemas.

Un saludo.

--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc
magarcia_sm
Active Member II

Re: Lucene no encuentra resultados que contienen espacios

Así es Cristina, si realizo la búsqueda con espacios en el buscador me devuelve correctamente el resultado.

Como solución temporal estoy realizando la búsqueda de la forma que me comentó Cesar anteriormente, creando una query formada por todas las separaciones que crean los espacios, de esta forma si obtengo el resultado deseado, pero me gustaría encontrar una solución al problema para evitar código innecesario y tan chapucero .

if (numFactura.indexOf(" ") >= 0) {
   var elementos = numFactura.split(" ");
   for (var i = 0; i < elementos.length; i++) {
      queryNumFactura = queryNumFactura + " +@fra\\:NumFactura:*" + elementos[i] + "*";
   }
} else {
queryNumFactura = " +@fra\\:NumFactura:" + numFactura;
}‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍