Articles

Go Search
  

Other Blogs
There are no items in this list.
XVanneste > Articles > Posts > Entity or Metadata Extractor [Fast Search for SharePoint 2010]
Entity or Metadata Extractor [Fast Search for SharePoint 2010]

L'extraction de métadonnées permet, dans un document, d'en remonter les informations importante, par exemple dans un document historique les dates sont importantes, dans des fiches de produits le nom des produits mais aussi leur catégorie sont importants pour en faire un catalogue par exemple.

Avec Fast certaines extractions de propriété sont built in comme les compagnies, les personnes ou la localisation du document. Par exemple suite a une recherche on peut voir la liste des compagnies présentent dans les documents :

Bien entendu on peut créer notre propre extraction de métadonnées.

L'extraction de métadonnées se configure en 4 parties :

  • Création et déploiement du dictionnaire d'extraction, probablement l'étape la plus importante
  • Configuration de Fast Search pour prendre en compte le dictionnaire
  • Création de la managed metadata
  • Configuration du refinement.

Création et déploiement du dictionnaire d'extraction

Le dictionnaire est un fichier XML, vous avez droit a trois dictionnaire whole words (mot entier) et deux part word (partie de mots). Les dictionnaires sont dans c:\FastSearch\Components\resourcestore\dictionaries\matching.

Les dictionnaires en questions sont :

Wholewords_extraction{1,2,3} et

Wordparts_extraction{1,2}

Le dictionnaire que nous allons créer permet de faire un refinement en fonction de la partie du corps dont parle le document. On va donc créé un dictionnaire qui fait le matching avec :

Regroupement

Partie du corps

Tete

cou

tete

nuque

oreille

nez

bouche

dent

langue

cerveau

Buste

ventre

poitrine

dos

poumon

cœur

estomac

intestin

foie

buste

Bras

coude

mains

bras

Bassin

bassin

rein

uretre

penis

hanche

vagin

fesse

anus

Jambe

jambe

genou

pied

cheville

cuisse

Pour faire le dictionnaire le xml doit etre de la forme :

<dictionary>

<entry key="valeur a chercher" value="valeur de correspondance"/>

</dictionary>

Par exemple :

<entry key="William H. Gates" value="Bill Gates"/>

Signifie qu'à chaque fois que le moteur de recherche trouvera William H. Gates il fera le regroupement avec Bill Gates ainsi les recherches sur Bill Gates retourneront Bill Gates ET William H. Gates.

Dans notre cas il faut indiquer au moteur de recherche qu'a chaque fois qu'une recherche sur tête, par exemple, est effectuée il faut retourner tous les documents qui contiennent cou, tête, nuque, oreille, nez, bouche, dent, langue, cerveau.

On aura donc :

<dictionary>

    <entry key="cou" value="Tete"/>

    <entry key="tete" value="Tete"/>

    <entry key="nuque" value="Tete"/>

    <entry key="crane" value="Tete"/>

    <entry key="oreille" value="Tete"/>

    <entry key="nez" value="Tete"/>

    <entry key="bouche" value="Tete"/>

    <entry key="dent" value="Tete"/>

    <entry key="langue" value="Tete"/>

    <entry key="cerveau" value="Tete"/>

</dictionary>

 

Voilà le dictionnaire final bodyParts.xml:

<?xml version="1.0" encoding="UTF-8"?>

 

<dictionary>

 

<!-- the following entry will recognize the name "William H. Gates" and normalize it to "Bill Gates"

<entry key="William H. Gates" value="Bill Gates"/>

-->

 

    <entry key="cou" value="Tete"/>

    <entry key="tete" value="Tete"/>

    <entry key="nuque" value="Tete"/>

    <entry key="crane" value="Tete"/>

    <entry key="oreille" value="Tete"/>

    <entry key="nez" value="Tete"/>

    <entry key="bouche" value="Tete"/>

    <entry key="dent" value="Tete"/>

    <entry key="langue" value="Tete"/>

    <entry key="cerveau" value="Tete"/>

 

    <entry key="ventre" value="Buste"/>

    <entry key="poitrine" value="Buste"/>

    <entry key="dos" value="Buste"/>

    <entry key="poumon" value="Buste"/>

    <entry key="coeur" value="Buste"/>

    <entry key="estomac" value="Buste"/>

    <entry key="intestin" value="Buste"/>

    <entry key="foie" value="Buste"/>

    <entry key="buste" value="Buste"/>

 

    <entry key="coude" value="Bras"/>

    <entry key="mains" value="Bras"/>

    <entry key="bras" value="Bras"/>

 

 

    <entry key="bassin" value="Bassin"/>

    <entry key="rein" value="Bassin"/>

    <entry key="uretre" value="Bassin"/>

    <entry key="penis" value="Bassin"/>

    <entry key="hanche" value="Bassin"/>

    <entry key="vagin" value="Bassin"/>

    <entry key="fesse" value="Bassin"/>

    <entry key="anus" value="Bassin"/>

 

    <entry key="jambe" value="Jambe"/>

    <entry key="genou" value="Jambe"/>

    <entry key="pied" value="Jambe"/>

    <entry key="cheville" value="Jambe"/>

    <entry key="cuisse" value="Jambe"/>

</dictionary>

 

 

Maintenant on n'a plus qu'à l'uploader dans les resources de fast. Pour cela on lance le PowerShell de Fast et on met la commande :

Add-FastSearchResource –FilePath C:\Users\Administrator.XVDOM\Desktop\bodyparts.xml –Path dictionaries/matching/wholewords_extraction1.xml

Une fois que cela est fait le fichier Wholewords_extraction1.xml contient le contenu de bodyparts.xml

Configuration de Fast Search

Maintenant que le dictionnaire est fait, il faut activer le wholewordsextractor1 (qui utilise le dictionnaire XML Wholewords_extraction1.xml).

Pour cela on va dans C:\FastSearch\etc\config_data\DocumentProcessor\. Dans ce répertoire on ouvre optionalprocessing.xml.

Dans le bas du fichier on a les processors :

<processor name="wholewordsextractor1" active="no" />

<processor name="wholewordsextractor2" active="no" />

<processor name="wholewordsextractor3" active="no" />

<processor name="wordpartextractor1" active="no" />

<processor name="wordpartextractor2" active="no" />

Par défaut ils sont tous a no, bien entendu comme nous on a besoin que le wholewordsextractor1 fonctionne on va le passer a yes:

<processor name="wholewordsextractor1" active="yes" />

Pour que le fichier de configuration soit pris en compte par Fast on va redemarrer le procserver_1:

On ouvre une commande Dos (attention pas une commande powershell mais bien une Dos)

Nctrl status pour avoir l'état des services fast :

Nctrl restart procserver_1 pour redémarrer le document processor 1. Ensuite on utilise nctrl status pour voir quand il a fini de démarrer.

Maintenant on peut refaire un full crawl du connector et du query (autrement seul les nouveaux documents prendront en compte la metadata extraction)

Création de la managed metadata

Maintenant qu'on a l'extraction de configurer il faut la mapper a une manage metadata.

Premièrement on va dans Manage Service Application/ Fast Search Query/ Fast Search Administration.

Et là on sélectionne Managed Properties :

On clique sur Add Managed Properties :

Notre propriétés s'appellera BodyParts. Ensuite on clique sur add mapping car on va la mapper a wholewordsextractor1 qui est dans la catégorie MESG Linguistics.

On clique sur Add.

On met en place le stemming pour que les mots s'y rapprochant soit pris en compte (exemple cœur et coeur)

Ensuite on met que la propriété peut être query et refinement :

Maintenant on peut faire une query avec BodyParts.

Ici on a tous les documents qui parle de cou, tête, nuque, oreille, nez, bouche, dent, langue, cerveau

 

Configuration du refinement

Comme pour la langue on va ajouter un refinement pour bodyparts.

Dans le fichier XML du refinement (voir pour la langue) on ajoute la ligne :

<Category Title="Body Parts" Description="Use this filter to restrict results by company" Type="Microsoft.Office.Server.Search.WebControls.ManagedPropertyFilterGenerator" MetadataThreshold="1" NumberOfFiltersToDisplay="4" MaxNumberOfFilters="20" ShowMoreLink="True" MappedProperty="bodyparts" MoreLinkText="show more" LessLinkText="show fewer" ShowCounts="Count" />

 

Attention il faut, peut-être, aussi augmenter le nombre de catégorie.

Résultat

Si une personne fait une recherche sur anatomie par exemple :

On a une catégorie dans le refinement en plus :

Si je clique sur tete :

Ici on voit dans les quelques lignes retournées dans la description quelque mot clés. Bien entendu comme tout le document n'est pas affiché les autres documents les mots clé sont dans le contenu mais pas dans la description.

Comments

There are no comments yet for this post.