+
Creare Custom Entity Extractors in SharePoint 2013
Pubblicato il: 21/12/2013
Da: Riccardo Celesti
Lingua: Italiano
Livello: 400

Tra le varie funzionalità del servizio di ricerca di SharePoint 2013 c’è la capacità di riconoscere in automatico nel contenuto di un documento (titolo e corpo) una serie di parole chiave e salvarle in una managed property, pronta per essere utilizzata in qualunque soluzione basata sul search.

A dire la verità questa funzionalità non è in assoluto una novità nel mondo SharePoint, in quanto era già presente in FAST Search for SharePoint 2010. La grossa differenza procedura di configurazione, notevolmente semplificata, e soprattutto, il fatto che si tratta di una feature out-of-the-box.

La Custom Entity Extraction, così si chiama questa funzionalità, è una vera perla “rara” nel servizio di ricerca di SharePoint 2013. Perla “rara” anche nel senso che è probabilmente la feature meno utilizzata in assoluto (almeno nella mia esperienza su SharePoint 2010/2013).

Dicevo in precedenza che la configurazione è stata molto semplificata, vediamo subito come procedere. Prima di tutto dobbiamo creare un “dizionario” di parole chiave da ricercare nel documento. Si tratta di un file di testo (CSV) dove andremo a definire due “colonne”: Key e Display Form, dove Key identifica il keyword da cercare nel testo e Display Form il valore da salvare nella managed property da utilizzare nella soluzione di ricerca (come refiner, proprietà dei risultati, ecc..).
Combinando questi due valori è inoltre possibile definire dei sinonimi per ciascun termine e fare in modo di salvare un unico valore per più keyword. L’esempio seguente può aiutare a capire meglio il concetto.

Figura 1

Come possiamo vedere nell’immagine precedente abbiamo creato un elenco di “prodotti” e abbiamo usato lo stesso termine nella colonna Display Form per più chiavi (es. MOSS, SP, SharePoint corrispondono a tutti e tre a SharePoint). In questo modo per ciascuna di queste parole sarà salvato un valore comune. Non male.

Il passo successivo, una volta completato il dizionario, consiste nell’importazione del file csv in SharePoint e più precisamente, nella Search Service Application. Questa operazione è possibile unicamente tramite Windows Powershell. Vediamo subito come.

$ssa = Get-SPEnterpriseSearchServiceApplication "<Search Service Application Name>"

 

Import-SPEnterpriseSearchCustomExtractionDictionary -SearchApplication $ssa -FileName "\\SP2013\Tools\products.csv" -DictionaryName Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.1

 

Lo script è molto semplice. Innanzi tutto memorizziamo in una variabile il riferimento alla Search Service Application, quindi importiamo il file, specificando la Search Service Application e il percorso fisico dove si trova il file (richiesto in formato UNC. L’utente deve poter accedere al percorso di rete con pieni permessi).

L’ultimo parametro richiesto è il DictionaryName. Si tratta molto probabilmente del passaggio meno immediato di tutto il procedimento. Questo parametro accetta unicamente un elenco fisso di valori, corrispondenti alla diverse tipologie di entity extractors che SharePoint 2013 ci mette a disposizione.

Abbiamo infatti la possibilità di scegliere tra quattro modalità di “ricerca” delle parole chiave presenti nel dizionario all’interno dei documenti, scegliendo tra case sensitive/insensitive e match parziale o completo. Ognuna di queste modalità corrisponde ad una tipologia di Entity Extractor. Inoltre per ciascuno di questi possiamo aggiungere più di un dizionario (solo per gli estrattori case insensitive).

Dictionary Name

Case

Match

Microsoft.UserDictionaries.EntityExtraction.Custom.Word.1

Insensitive

Completo

Microsoft.UserDictionaries.EntityExtraction.Custom.Word.2

Microsoft.UserDictionaries.EntityExtraction.Custom.Word.3

Microsoft.UserDictionaries.EntityExtraction.Custom.Word.4

Microsoft.UserDictionaries.EntityExtraction.Custom.Word.5

Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.1

Insensitive

Parziale

Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.2

Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.3

Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.4

Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.5

Microsoft.UserDictionaries.EntityExtraction.Custom.ExactWord.1

Sensitive

Completo

Microsoft.UserDictionaries.EntityExtraction.Custom.ExactWordPart.1

Sensitive

Parziale

 

Come possiamo vedere dalla tabella precedente possiamo aggiungere fino a 12 dizionari differenti!

Dopo aver importato il dizionario dovremo avviare un full crawl. Durante il processo di indicizzazione il servizio di ricerca cercherà all’interno dei documenti i termini contenuti nel nostro vocabolario e, nel caso trovi qualche corrispondenza ne salverà il risultato in una managed property.

Out-of-the-box troviamo già 12 managed property pre-configurate, una per ciascun entity extractor, pronte per essere utilizzate, una volta valorizzate dal processo di entity extraction, come refiner in qualsiasi soluzione basata sul servizio di ricerca.

Property Extractor

Managed Property

Microsoft.UserDictionaries.EntityExtraction.Custom.Word.1

WordCustomRefiner1

Microsoft.UserDictionaries.EntityExtraction.Custom.Word.2

WordCustomRefiner2

Microsoft.UserDictionaries.EntityExtraction.Custom.Word.3

WordCustomRefiner3

Microsoft.UserDictionaries.EntityExtraction.Custom.Word.4

WordCustomRefiner4

Microsoft.UserDictionaries.EntityExtraction.Custom.Word.5

WordCustomRefiner5

Microsoft.UserDictionaries.EntityExtraction.Custom.ExactWord.1

WordExactCustomRefiner

Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.1

WordPartCustomRefiner1

Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.2

WordPartCustomRefiner2

Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.3

WordPartCustomRefiner3

Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.4

WordPartCustomRefiner4

Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.5

WordPartCustomRefiner5

Microsoft.UserDictionaries.EntityExtraction.Custom.ExactWordPart.1

WordPartExactCustomRefiner

 

Inoltre, se volessimo mappare un dizionario ad una managed property custom non dovremmo fare altro che configurare la nostra proprietà specificando quale dizionario utilizzare, come mostrato nell’immagine seguente.

Figura 2

Ed infine vediamo come appare il refinement panel una volta completato il procedimento, niente male eh?

Figura 3

Tags


Destinatari


Prodotti

SharePoint Server 2013


Bookmark and Share