La recherche avancée avec DotNetNuke
sept.
28
Par :
Cyril Plassard
28/09/2011 13:45
L’un des avantages que propose l’édition Professional de DotNetNuke, c’est de bénéficier d’un service de recherche avancée : le « Search Crawler ».
Tous les utilisateurs de l’édition Community seront d’accord avec moi, le moteur de recherche a toujours été le gros point faible de DotNetNuke.
Indexation aléatoire, caractères accentués non pris en charge, présentation des résultats de recherche…
Combien de développeurs se sont arraché les cheveux sur l’implémentation de l’interface Isearchable ? Surement beaucoup quand je vois le nombre de modules commerciaux qui ne sont pas pris en compte par la recherche.
Bien sûr, il existe des solutions alternatives disponibles sur le marché, j’ai vu aussi certains projets open source prometteurs, mais il devenait crucial qu’une solution pérenne soit proposée par l’équipe de développement de DotNetNuke.
Depuis la version 5.6.0 c’est donc un « vrai » moteur de recherche qui est fourni avec l’édition Professional.
Ce moteur s’appuie sur le célèbre projet Lucene.
Voici donc les caractéristiques fournies par DotNetNuke :
- Syntaxe de recherche avancée.

- Permet d’indexer plusieurs sites (quelle que soit la technologie employée sur les autres sites).

- Indexation de documents Microsoft Office (Word, Excel et PowerPoint) et PDF.
- Intégration des mécanismes de sécurité de DotNetNuke lors de l’indexation du site.
- Indexation pouvant être effectuée en utilisant un rôle de sécurité particulier. C’est-à-dire que vous pouvez indexer le site comme si le moteur se comportait comme un utilisateur d’un groupe particulier. Par exemple, les résultats d’une recherche effectuée par un utilisateur anonyme ne seront pas forcément similaires à ceux qui auront été générés par un utilisateur enregistré (membre, client…).

- Les tags et les métadonnées contenus dans une page ou un document sont pris en compte lors de la recherche.
- Champ de recherche implémenté comme un Skin Object. C’est-à-dire que vous pouvez poser directement votre champ de recherche dans une skin. Il n’est donc pas nécessaire d’ajouter un module « Search Input » sur toutes les pages.
- Périmètre de recherche configurable. Chaque module d’affichage des résultats « Search Result » peut être configuré pour limiter la recherche à certains sites que le moteur a indexés.

- Compatible avec les directives META "no index" et "no follow" des moteurs de recherche.
- Exclusion automatique des modules anonymes. Les pages comme « Terms », « Privacy », « Login » et « Register » sont en fait des modules qui sont chargés dans la même page sur laquelle l’utilisateur est positionné. C'est à dire que le même contenu peut être accessible à partir de plusieurs URL. Ce comportement peut être assez gênant lorsque vous faites une recherche sur un mot ou une expression présente dans votre page « confidentialité ». Ainsi ce nouveau moteur de recherche ne fera apparaitre qu’une seule fois la page concernée dans les résultats.
Voici la syntaxe qui va vous permettre d’utiliser la puissance de ce nouveau moteur de recherche :
|
Requête
|
Exemple
|
Notes
|
|
Mot unique
|
document
|
Va effectuer une recherche en utilisant le mot unique « document ».
|
|
Phrase
|
"document important "
|
Va effectuer une recherche en utilisant la phrase « document important ».
|
|
Recherche dans les champs
|
title:document
|
Va rechercher les documents ou les pages qui ont pour titre le mot “document ».
|
|
Recherche Joker
(wildcard search)
|
doc?ment
|
Va effectuer une recherche en utilisant un caractère joker. Les résultats pourront correspondre à « document » ou « dociment » mais pas « docooment ».
|
|
document*
|
Va effectuer une recherche en utilisant des caractères joker. Les résultats pourront correspondre à « document » ou « documentation ».
|
|
Recherche approximative
(fuzzy search)
|
docment~
|
La recherché sera effectuée en utilisant une orthographe approximative. Les résultats pourront correspondre à « document ».
|
|
document~0.9
|
La recherché sera effectuée en utilisant une orthographe similaire. 0.9 est ici la similarité demandée.
Par défaut la similarité est de 0.5.
|
|
Recherche à proximité
|
"document important "~5
|
Recherche des mots ou une phrase qui ne sont pas collés les uns aux autres. Dans cet exemple, la distance est de 5 mots.
|
|
Recherche par bornes
(range search)
|
author:{Einstein TO Newton}
|
Recherche des documents dont le champ « author » contient une valeur comprise entre les bornes spécifiées.
|
|
date:{20050101 TO 20050201}
|
Recherche des documents dont le champ « date » contient une valeur comprise entre les dates spécifiées.
|
|
Pertinence
|
document important^4
|
Multiplie par 4 le facteur de pertinence du terme « important ».
Le facteur de pertinence par défaut est 1.
|
|
"document important "^4 "moteur de recherche"
|
Vous pouvez également utiliser le facteur de pertinence pour des phrases.
|
|
Opérateur OR (ou)
|
document important
|
« OR » est l’opérateur par défaut
|
|
document OR important
|
Les résultats de la recherche devront contenir « document » OU « important ».
|
|
Opérateur AND (et)
|
document AND important
|
Les résultats de la recherche devront contenir les deux mots.
|
|
Opérateur +
|
document +important
|
Les résultats de la recherche devront contenir le mot « important » et pourront contenir le mot « document ».
|
|
Opérateur NOT/- (sauf)
|
document -important
|
Les résultats de la recherche devront contenir le mot « document » mais pas le mot « important ».
|
|
Regroupement
|
(important OR bureau) AND document
|
Vous pouvez utiliser des parenthèses pour effectuer des requêtes de regroupement.
|
|
author:(Einstein OR Newton)
|
Les parenthèses fonctionnent également sur les champs.
|
Reqêtes interdites :
|
Requête
|
Exemples
|
Notes
|
|
Joker au début d’un terme
|
?ocument, *ocument
|
Retourne une erreur Lucene.Net.QueryParsers.ParseException.
|
|
Mots communs (stop words)
|
un, le, et,
a, the, and
|
En fonction de la langue choisie, les mots communs ne sont pas indexés.
|
|
Caractères spéciaux : && || ! ( ) { } [ ] ^ " ~ * ? : \
|
\?, \:
|
Utiliser la barre inverse \ pour échapper les caractères.
|
*Source DotNetNuke Professional Edition, traduction français Tangane
Après avoir indexé le site de Tangane via le moteur de mon intranet de test, voici ce que retourne la requête ("connecteur sharepoint" AND DotNetNuke) OR "logo sharepoint" :

Voici donc un aperçu de ce module qui à lui seul justifie le passage d’une édition Community à une édition Professional voir Enterprise.
Vous pouvez télécharger une version d’évaluation de l’édition Professional à cette adresse : http://www.dotnetnuke.com/Products/Professional-Edition-Trial.aspx
Bien sûr, vous pouvez contacter nos équipes pour vous accompagner dans la mise en œuvre de DotNetNuke, quelle que soit l'édition que vous utilisez.
Copyright © Tangane 2011