+
Creare custom property extractor per FAST Search for SharePoint 2010
Pubblicato il: 29/09/2012
Da: Riccardo Celesti
Lingua: Italiano
Livello: 400

Una delle funzionalità “nascoste” più interessanti di FAST Search for SharePoint 2010 è la capacità di estrarre dal contenuto indicizzato una serie di termini e di riportarne il valore all’interno di una crawled property. Una volta valorizzata, la crawled property potrà essere associata ad una managed property da utilizzare come criterio di raffinamento, ordinamento o più semplicemente come dato visualizzato nei risultati della ricerca.

Nell’installazione base di FAST Search for SharePoint 2010 (FS4SP) sono presenti tre tipologie di termini che vengono estratti dai contenuti indicizzati: luoghi (paesi, città, ecc.), società (Microsoft, Nokia, ecc.), persone (Riccardo Celesti, Michael Jordan, ecc.). Ad ogni tipologia corrisponde un vero e proprio dizionario contenente i termini, parole singole o frasi, da individuare nel testo. Questi dizionari possono ovviamente essere modificati per rispondere alle esigenze specifiche di ciascuna azienda, ma non solo. FS4SP permette infatti di creare nuovi dizionari e quindi nuove tipologie di termini da estrarre durante lo stage di content processing. In questo articolo creeremo un dizionario di canzoni (dei Ramones, Gabba Gabba Hey!!).

Le macro-attività necessarie per la configurazione di un custom property extractor sono:

·        Creazione del dizionario dei termini;

·        Configurazione dello stage di item processing;

·        Creazione di crawled e managed property.

Creazione del dizionario dei termini

Creare un dizionario è un operazione relativamente semplice, è sufficiente un qualsiasi editor testuale, come Notepad ad esempio. Il nostro dizionario è infatti un file xml con una struttura definita. La parte più importante in questa fase è la pianificazione dei termini, scegliere cioè con attenzione quali parole o frasi saranno inserite nel dizionario.

<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
               <entry key="blitzkrieg bop" value="Blitzkrieg bop"/>
               <entry key="beat on the brat" value="Beat on the brat"/>
               <entry key="havana affair" value="Havana affair"/>
               <!--
... -->
</dictionary>

Come possiamo vedere nell’esempio precedente la struttura xml del dizionario è molto semplice. Abbiamo un nodo padre dictionary e tanti nodi figlio entry quanti sono i termini. Ciascun nodo entry ha due attributi: key, obbligatorio, contiene la parola o la frase che deve essere individuata nei documenti indicizzati.  E’ importante che il valore dell’attributo key non contenga apostrofi, altrimenti la voce verrà ignorata.

Tramite l’attributo value, facoltativo, è possibile specificare un parola o una frase, diversa da quelle indicate nell’attributo key con cui sarà valorizzata la crawled property associata al dizionario. Affinché questo attributo venga considerato sarà necessario impostare a yes la proprietà yield-value nella successiva configurazione dello stage di item processing.

La scelta di utilizzare o meno l’attributo value è in buona parte influenzata anche dalla necessità di impostare più sinonimi per lo stesso termine. E’ infatti possibile creare più nodi entry con attributi key differenti e lo stesso attributo value.

Interpretazione del dizionario: Whole Word e Word Part

Il dizionario può essere interpretato in due modi: per ogni termine può essere verificata la coincidenza esatta nel testo, modalità detta Whole Word Matching, o la coincidenza parziale, modalità detta Word Part Matching. Nel primo caso al testo viene applicato un processo base di normalizzazione che permette di trasformare in spazi vuoti eventuali caratteri di separazione, come ad esempio virgola, due punti, ecc. Il confronto delle stringhe avviene in seguito a questa trasformazione. Nella modalità Word Part Matching, usata in modo particolare per aclune lingue orientali, il processo di normalizzazione non viene eseguito.

In entrambi i casi è possibile configurare se tenere o meno in considerazione la variante maiuscola - minuscola del testo. La modalità Whole Word Matching può essere impostata come Verbatim (case insensitive) o WholeWords (case sensitive) mentre per la modalità Word Parts Matching le opzioni disponibili sono Substring (case insensitive) o WordParts (case sensitive).

Configurazione dello stage di item processing

Per fare in modo che il nuovo dizionario venga utilizzato da FS4SP sarà necessario modificare (o creare, se si tratta della prima volta che eseguite questa operazione) il file CustomPropertyExtractors.xml nella cartella \etc\config_data\DocumentProcessor che si trova nella directory di installazione di FS4SP.

La struttura del file CustomPropertyExtractors.xml è composta da un nodo extractors, root del documento, uno o più nodi extractor e uno o più nodi dictionary.

<?xml version="1.0" encoding="UTF-8"?>
<extractors>
  <extractor name="PunkRock" type="Verbatim" property="Songs">
    <dictionary name="Ramones" yield-values="yes"/>
  </extractor>
  <!--
… -->
</extractors>

In precedenza abbiamo già citato molti degli attributi del file CustomPropertyExtractors.xml, ma è utile ripeterli. Nel nodo extractor sono definiti gli attributi name che contiene il nome descrittivo del nodo, type, corrispondente a come il dizionario viene utilizzato (Whole Word Matching o Word Parts Matching, Case sensitive o Insensitive), property, che contiene il nome della crawled property associata al dizionario (uno o più) descritto nel nodo seguente. Nell’attributo name del nodo dictionary è indicato il nome del file dizionario definito in precedenza. Infine l’attributo yield-value permette di specificare se considerare o meno il valore dell’attributo value definito nel dizionario.

Normalizzazione del dizionario

Nel caso in cui l’attributo type venga valorizza con Verbatim o Substring sarà necessario normalizzare il file xml del dizionario.

Per completare questa attività è necessario accedere al server FS4SP e digitare da riga di comando l’istruzione lowercase.exe seguito dai path del dizionario e del file normalizzato creato dall’utility.

Figura 1 

Figura 1

Una volta normalizzato il file sarà necessario aggiungere il nuovo dizionario come risorsa di FAST Search for SharePoint. Anche in questo caso l’operazione dovrà essere eseguita da riga di comando, Powershell in questo caso. La cmdlet da utilizzare è Add-FastSearchResource.

Figura 2 

Figura 2

Come possiamo vedere i parametri richiesti sono solo due: FilePath che corrisponde al percorso dove si trova il (normalizzato se necessario) del dizionario e Path, percorso dove sarà aggiunto il file una volta “registrato” come risorsa. Un aspetto a cui prestare molta attenzione è assicurarsi di utilizzare come nome file lo stesso nome già indicato nel file CustomPropertyExtractors.xml.

Una volta aggiunta la nuova risorsa dovremo resettare i processi attivi per rendere efficace la nuova configurazione. Sulla macchina FS4SP con ruolo di Admin server sarà necessario digitare da riga di comando l’istruzione psctrl reset.

Creazione di crawled e managed property

Come ultimo passo sarà necessario creare una crawled property da associare ai termini del dizionario. Al contrario di quanto accade in situazioni “standard” dove il crawler è in grado di creare automaticamente le crawled property, in questo caso dovremo utilizzare Powershell.

La cmdlet specifica per questo scopo è New-FASTSearchMetadataCrawledProperty. I parametri richiesti sono: Name che dovrà corrispondere al nome specificato in precedenza nell’attibuto property del file CustomPropertyExtractors.xml, Propset con valore fisso 48385c54-cdfc-4e84-8117-c95b3cf8911c (corrispondente alla categoria MSEG Linguistic, specifica per questa tipologia di utilizzo) ed infine VariantType, anche questa con valore fisso 31 (corrispondente al tipo dati Text).

Figura 3 

Figura 3

Una volta completata questa operazione potremo creare, con Windows Powershell o da interfaccia, una Managed Property a cui associare la nuova crawled property e configurarla come Query, Sort o Refiner Property. Dopo aver completato un full crawl saremo in grado di utilizzare la nuova managed property nel nostro centro ricerche FAST.

Note importanti

FS4SP è in grado di riconoscere ed estrarre termini unicamente dal corpo e dal titolo dei contenuti indicizzati, eventuali frasi o parole chiave contenute nelle proprietà dei documenti saranno ignorate.

La procedura descritta in questo articolo è valida unicamente per farm SharePoint 2010 con FAST Search for SharePoint con Service Pack 1 correttamente installata. Per le versioni precedenti alla SP1 di FS4SP è necessario seguire una procedura diversa non descritta in questo articolo.

Tags


Destinatari


Prodotti

Microsoft SharePoint Server 2010


Bookmark and Share