# Recherche générale
# Introduction
Le module optionnel "fullsearch" fourni un mécanisme permettant de configurer des recherches simples à utiliser pour l'utilisateur.
Le principe d'utilisation est le suivant : à partir d'une suite de termes, une recherche est effectuée sur un sous-ensemble de Smart Elements. Le résultat est l'ensemble des Smart-Element contenant les termes recherchés dans le sous-ensemble.
Le sous-ensemble de Smart Elements où la recherche est effectuée s'appelle un Domaine de recherche.
Ce module fourni les fonctions suivantes:
- Un mécanisme de configuration des Domaines de recherches
- Une interface d'administration des Domaines de recherches
- Une interface de développement des Domaines de recherches
- Une api REST de recherche sur un domaine de recherche
- Une api PHP
- de recherche sur un domaine de recherche
- de mise en évidence des termes recherchés
- d'indexation des valeurs de recherche
- d'administration des domaines de recherche
- Des éléments d'interface permettant l'intégration avec le composant Search Criteria pour ajouter le filtre sur un domaine dédié.
# Principe d'indexation des données de recherche
Lorsqu'un domaine de recherche est ajouté, un espace de donnée dédié est créé afin de contenir l'ensemble des termes à rechercher. Ces termes sont issues des valeurs affichées des Smart Elements. Une fois cet espace constitué, le filtre de recherche générale cherchera parmi les données de cet espace et non dans les données directement liées aux Smart Elements.
# Indexation à intervalle régulier
A l'installation du module, une tâche programmée lance l'indexation des données de recherche qui nécessite une mise à
jour. Cette tâche est programmée pour être exécutée toutes 30min (à 5 et 35 min de chaque heure). Cette tâche est
identifiée par le nom logique FULLSEARCH_UPDATE_TASK
.
# Indexation manuelle
L'api PHP permet de contrôler l'indexation de manière plus précise. Pour une prise en compte immédiate, il est possible de programmer cette indexation sur le postStore du SmartElement.
# Syntaxe des termes recherchés
La recherche se base sur la recherche plein texte fournie par PostgreSql. Le principe de base est de filtrer tous les Smart Elements qui contiennent les termes indiqués dans le texte recherché.
Les notations suivantes sont supportés (exemple en Français
pour le système de règles de parsing (stemmer)
simple
).
- Un texte sans guillemets (
"
) : Les termes saisis sont interprétés comme une suite de "ET" où chacun des termes recherchés doit être présent dans les résultats (dans n'importe quel ordre).
Exemple:jardin château
=> recherche les Smart Elements contenant les motsjardin(s)
etchâteau(x)
. - Un texte entre guillemets (
"
): Les termes saisis sont interprétés comme une suite de mots (l'ordre est respecté).
L'utilisation des guillemets requiert une saisie d'au moins deux mots.
Exemple:"jardin château"
=> recherche les Smart Elements dans lesquels les motsjardin(s)
etchâteau(x)
se succèdent. - Le mot clé
or
entre deux termes permet de rechercher un mot ou un autre.
L'opérateur peut être utilisé avec autant de mots que souhaité.
Exemple:jardin or château
=> recherche les Smart Elements contenantjardin(s)
ouchâteau(x)
.
jardin or château or fontaine
=> recherche les Smarts Elements contenantjardin(s)
ouchâteau(x)
ou >fontaine(s)
.
Attention
Une recherche du mot clé or
dans une saisie entre guillemets effectuera une recherche sur la succession de tous les
mots y compris le mot clé.
Exemple: la recherche de "jardin or château"
retournera les Smart Elements dans lesquels les mots jardin(s)
, or
et château(x)
se succédent.
Attention
Une recherche utilisant le mot clé or
doit contenir au moins 2 termes. Dans le cas contraire, la recherche effectuée
est une recherche de termes sans guillemets. Exemple: la recherche or château
retourne les Smart Elements contenant
les mots or
et château(x)
.
- Le caractère
-
permet d'exclure certains mot des résultats de la recherche.
Ce caractère doit précédé le mot sans espace.
Exemple:jardin -château
=> recherche les Smart Elements contenant le motjardin(s)
sanschâteau(x)
. - Le caractère
*
permet d'indiquer que le mot recherchécommence par
.
Ce caractère doit succéder le mot recherché sans espace.
Exemple:jardin chat*
=> recherche les Smart Elements contenant le motjardin(s)
et tout les mots commençant par >chat
(ex: chat(s), château(x), chatelet(s), chateaubriand(s), etc...).