Autocomplétion + Lucene : recherche sur un champ précis

Lucas Choquet · le 26/01/18 à 17:47

Bonjour,

Nous avons tenté de surcharger le fichier acsearch.jspafin d'y ajouter de nouvelles queries de recherche. Chaque nouvelle query ajoutée était fonctionnelle et permettait par exemple de séparer différents types de publications dans l'affichage des résultats.

Nous avons ensuite cherché à effectuer une recherche sur un champ précis d'un type de contenu, par exemple, le champ "Description" (soit abstract) d'une publication.

L'API de la classe QueryHandlernous a amené à rédiger la ligne suivante :

qh.setSearchedFields(new String[]{qh.setSearchedFields(new String[]{ com.jalios.jcms.search.LucenePublicationSearchEngine.TITLE_FIELD, com.jalios.jcms.search.LucenePublicationSearchEngine.ABSTRACT_FIELD });

Cette configuration est censée pouvoir rechercher sur les champs "Titre" et "Description" des types déclarés dans la query. Cependant, lors de nos tests, seule la recherche par titre fonctionne et celle par description est ignorée.

Nous avons effectué une réindexation complète et nous sommes assuré que les champs en question soient recherchables dans les options de types de contenu. En recherche complète, cela est effectif.

Cette erreur a-t-elle été vue chez d'autres personnes ou semble-t-il isolé ? La recherche d'autocomplétion effectuée sur acsearch.jspest-elle nativement verrouillée sur le titre ? Existe-t-il des solutions pour que cette particularité fonctionne ?

Merci beaucoup pour vos réponses.

Cordialement,

Lucas Choquet

EDIT : pour davantage de détails, la version utilisée de JCMS est JPlatform 9SP4

13 pts
Benoît Dissert - le 27/01/18 à 10:44
Meilleure réponse

Entre JPlatform 9SP2 et JPlatform 9SP3, Jalios a modifié assez en profondeur la mécanique d'indexation, pour des raisons de performances.

Entre autre, par défaut, tous les champs ne sont plus systématiquement indexés.

Heureusement, on peut rétablir le comportement avec indexation de tous les champs en ajoutant cette propriété et en faisant à nouveau l'indexation complète : 

lucene.pub-indexing.map-all-pub-fields-to-lucene-fields: true

Référence : 

https://community.jalios.com/jcms/jc_148040/fr/notes-d-application-des-services-packs-de-jcms-9#toc_3_5

#1

Merci pour votre réponse. Cependant, l'ajout de cette propriété ne résout pas le problème. En effet, il semble que l'autocomplétion n'effectue une recherche que sur le champ titre, alors que la recherche complète l'effectue sur tous les champs indexés. Indexer tous les champs ne semble pas être la solution.

Lucas Choquet · le 29/01/18 à 08:58
#2

Suite à de nouvelles indexations effectuées aujourd'hui et à un nettoyage de store, les résultats de recherche renvoient finalement les données souhaitées (mêmes résultats en recherche complète et en recherche autocomplétée). Probablement l'indexation s'est-elle mal déroulée les fois précédentes.
Lucene effectuant bien à présent les recherches sur les champs indexés de JCMS, notre problème est résolu. Merci pour votre réaction.

Lucas Choquet · le 30/01/18 à 10:36
10 pts