cancel
Showing results for 
Search instead for 
Did you mean: 

Lucene no encuentra resultados que contienen espacios

magarcia_sm
Star Contributor
Star Contributor

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 23

douglascrp
World-Class Innovator
World-Class Innovator

Hola.

Tú puedes intentar poner el valor como sigue

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

Haciendo así, el valor exacto sendrá buscado.

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
World-Class Innovator
World-Class Innovator

Tu deberias intentar tu codigo en Node Browser.

Creo que esto va a ayudar te.

Puedes tambíen intentar usar alfresco fts query.

douglascrp
World-Class Innovator
World-Class Innovator

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.

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...

cesarista
World-Class Innovator
World-Class Innovator

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.

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>

cesarista
World-Class Innovator
World-Class Innovator

magarcia_sm _ Hiciste una reindexación de índices completa después del tokenised ? De esta manera los datos del CIF, se indexan "en bloque". Te aconsejo en cualquier caso que pongas los loggers de JS API y veas cuales son las queries que estas haciendo en el catalina.out, si introducen caracteres raros por los espacios... etc etc.

log4j.logger.org.alfresco.repo.jscript.ScriptLogger=DEBUG
log4j.logger.org.alfresco.repo.jscript.Search=DEBUG

- How to get logs for Alfresco querys - zylk 

Saludos.

--C.

Así es Cesar Capillas‌, hice un "index.recovery.mode=FULL" pero me sigue pasando lo mismo.