AnsweredAssumed Answered

Cómo hacer búsquedas exactas sin distinguir entre mayúsculas y minúsculas con ALFRESCO_FTS

Question asked by spilby on Jun 22, 2015
Buenos días,

necesito hacer la búsqueda de un valor por FTS y que se cumplan dos requisitos:

1 - Ha de ser exacta, justo del valor que busco, para que si tengo "ABC 2" y busco "ABC" no me devuelva que el valor existe. Es decir, sin "tokenizar".

2 - No ha de discriminar entre mayúsculas y minúsculas. Es decir, ha de ser case insensitive.

Estoy utilizando esta query para realizar la búsqueda de un metadato.


String query = "PATH: \"/" + myPath + "/cm:" + folder + "//.\"" + " AND TYPE:\"" + myType + "\"" + " AND =@mod\\:" + myCustomProperty + ":\"" + searchValue + "\"";   SearchParameters sp = new SearchParameters(); sp.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE); sp.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO); sp.setQuery(query); ResultSet results = getSearchService().query(sp);


En mi modelo XML ésto es lo que tengo.


<namespace uri="myCustomNS" prefix="mod" />   <property name="mod:myCustomProperty" editVisible="true" createVisible="true" editable="true" inheritable="false" calculable="true"> <title>My custom property</title> <type>d:text</type> <mandatory>true</mandatory> <index enabled="true"> <atomic>true</atomic> <stored>false</stored> <tokenised>both</tokenised> </index> <constraints> <constraint ref="desal:stringLength100" /> </constraints> </property>   


Y no puedo variar el modelo para evitar reindexar todo lo que tenemos.

Utilizo el LANGUAGE_FTS_ALFRESCO. Eso es así porque al utilizar =@ me permitía cumplir el requisito 1. Lo malo es que no cumple el 2.

Destacar también que el valor ha buscar puede tener varias palabras, con espacios en blanco.

Alguien me puede echar una mano a ver cómo podría hacerlo? No logro que me funcione, a la que le quito el = me busca tokenizando, y si lo dejo, me distingue entre mayúsculas y minúsculas.

Merci!

Outcomes