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.
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.
Tu deberias intentar tu codigo en Node Browser.
Creo que esto va a ayudar te.
Puedes tambíen intentar usar alfresco fts query.
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.
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 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...
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>
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;
}
Content from pre 2016 and from language groups that have been closed.
Content is read-only.
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.