Creare un connettore di indicizzazione custom in SharePoint 2016
Creare e configurare un motore di ricerca non sempre è un’attività semplice. Le personalizzazioni richieste spesso sono le più disparate e complicano attività già complesse in origine. L’utilizzo di SharePoint è un buon punto di partenza soprattutto se si indicizzano documenti gestibili con la suite office. Ma cosa fare se è necessario indicizzare e ricercare il contenuto di file diversi come, ad esempio, un xml?
In questo articolo utilizzeremo un approccio basato su una soluzione custom supportata da Microsoft, già proposta per SharePoint 2013 qui e riproposta per SharePoint 2016.
Prerequisiti:
-
Windows Server 2012 R2
-
SharePoint Server 2016
SharePoint Farm
La farm utilizzata nell’articolo è composta da un singolo nodo con ruolo “Application with Search” ed una Search Service Application con configurazioni di default.
Figura 1: SharePoint Server Farm – Panoramica
Search Service Application
Creiamo una nuova Search Service Application.
Nella Central Administration Console clicchiamo su Application Management -> Manage Service Applications.
Figura 2: SharePoint Central Administration Console – Manage Service Applications
Clicchiamo su New -> Search Service Application.
Inseriamo un nome, nel mio caso utilizzo “SSA”.
Figura 3: SharePoint Central Administration Console – Creazione Search Service Application
Configuriamo i nuovi application pool
Figura 4: SharePoint Central Administration Console – Creazione Search Service Application
E clicchiamo su OK per confermare.
Al termine delle configurazioni, confermiamo cliccando nuovamente OK
Figura 5: SharePoint Central Administration Console – Search Service Application create correttamente
Apriamo la console della Search per verificare che tutto sia stato configurato correttamente.
Figura 6: SharePoint Search Administration Console – Panoramica
Effettuiamo il download della solution XmlFileConnector.
Questa è stata già ricompilata per SharePoint 2016.
Creiamo una nuova directory C:\Temp nella quale copieremo il contenuto del pacchetto appena scaricato.
Figura 7: File System – Directory di appoggio “Temp”
Apriamo notepad e creiamo un nuovo file chiamato xmldoc.reg il cui contenuto sarà:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\16.0\Search\Setup\ProtocolHandlers]
"xmldoc"="OSearch16.ConnectorProtocolHandler.1"
Lanciamo la SharePoint Management Shell con privilegi elevati ed eseguiamo i seguenti comandi:
Set-location “C:\Temp\XmlFileConnector\bin\Debug\”
[System.Reflection.Assembly]::Load(“System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”)
$publish = New-Object System.EnterpriseServices.Internal.Publish
$publish.GacInstall(“C:\Temp\XmlFileConnector\bin\Debug\XmlFileConnector.dll”)
Figura 8: SharePoint Management Shell – Output configurazione dll
Eseguiamo il file xmldoc.reg. In questo modo modificheremo il registro di sistema per accettare in nuovo handler.
Figura 9: Windows popup – Modifica registro di sistema
Eseguiamo i seguenti comandi per riconfigurare la Search Service Application inserendo l’hostname del server che si sta utilizzando, nel mio caso “ssa”:
$SPApplSrv01 = Get-SPEnterpriseSearchServiceInstance -Identity “svilsearch01”
$ssa = Get-SPEnterpriseSearchServiceApplication
$newTopology = New-SPEnterpriseSearchTopology -SearchApplication $ssa
New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $SPApplSrv01
New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $SPApplSrv01
New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $SPApplSrv01
New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $SPApplSrv01
New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $SPApplSrv01 -IndexPartition 0
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $SPApplSrv01
#Activate the Topology
Set-SPEnterpriseSearchTopology -Identity $newTopology
$searchapp = Get-SPEnterpriseSearchServiceApplication -Identity “ssa”
New-SPEnterpriseSearchCrawlCustomConnector -SearchApplication $searchapp –Protocol xmldoc -Name xmldoc –ModelFilePath “C:\Temp\XmlFileConnector\Model.xml”
Se tutto è andato bene, il risultato sarà il seguente:
Figura 10: SharePoint Management Shell – Output configurazione connettore xmldoc
Riavviamo la Search Service Application con i comandi:
net stop osearch16
net start osearch16
Figura 11: SharePoint Management Shell – Restart servizio search
Per abilitare la search all’utilizzo del nuovo connettore, eseguiamo:
$searchapp = Get-SPEnterpriseSearchServiceApplication -Identity “SSA”
New-SPEnterpriseSearchMetadataCategory -Name “xmldoc” -Propset “BCC9619B-BFBD-4BD6-8E51-466F9241A27A” -searchApplication $searchapp
$c = Get-SPEnterpriseSearchMetadataCategory -SearchApplication $searchapp -Identity “xmldoc”
$c.DiscoverNewProperties = $true
$c.Update()
A questo punto ci serve una share di rete dove far risiedere il nostro file xml:
Figura 12: Windows – Share condivisa
Utilizzando le configurazioni di base, si ottiene un risultato soddisfacente in ambiente di test:
Figura 13: Windows – Configurazioni share condivisa
L’xml che utilizzeremo è il seguente:
<?xml version=”1.0″ encoding=”utf-8″ ?>
<Products>
<Product>
<ID>C234</ID>
<Title>Contoso series2</Title>
<ItemCategoryText>Cameras</ItemCategoryText>
<Url>http://contoso/sites/pub1/Pages/DetailsPage.aspx?id=C234</Url>
<Category>Cameras/SLR</Category>
<Price>799</Price>
<Description>This camera is making great pictures. Easy to use to an affordable price. </Description>
</Product>
<Product>
<ID>C235</ID>
<Title>Contoso Camera</Title>
<ItemCategoryText>Cameras</ItemCategoryText>
<Url>http://contoso/sites/pub1/Pages/DetailsPage.aspx?id=C235</Url>
<Category>Cameras/compact</Category>
<Price>350</Price>
<Description>This camera is making great pictures. Easy to use to an affordable price. </Description>
</Product>
</Products>
A questo punto non ci resta che creare un nuovo Content Source, definire una share dove risiederanno i nostro file .xml ed effettuare la prima full crawl.
Dalla Central Administration Console, clicchiamo su Manage Service Application -> SSA -> Content Sources.
Figura 14: SharePoint Search Administration Console – Manage Content Sources
Clicchiamo su New Content Source.
A questo punto è possibile specificare il nuovo Content Source Type: Cliccando su Custom Repository è possibile selezionare xmldoc.
Figura 15: SharePoint Search Administration Console – Creazione nuovo content source
Immaginando di dover indicizzare i nodi Product per ID, Title e Url utilizziamo la seguente sintassi come “Start Addresses” (attenzione alle maiuscole!):
xmldoc://svilsearch01/xml/#x=Product:ID;;Titleeml:Title;;Urleml:Url#
Figura 16: SharePoint Search Administration Console – Creazione nuovo content source
Confermiamo la configurazione cliccando su OK.
Figura 17: SharePoint Search Administration Console – Manage content sources
A questo punto non ci resta che eseguire un Full Crawl ed attendere il termine dell’operazione:
Figura 18: SharePoint Search Administration Console – Full Crawl
Terminato il crawl è necessario verificare se tutto è andato per il verso giusto.
Figura 19: SharePoint Search Administration Console – Termine Full Crawl
Cliccando su Crawl Log è possibile verificare che l’unico xml (per il momento) inserito nella share è stato indicizzato con successo:
Figura 20: SharePoint Search Administration Console – Crawl log
Site Collection
Per avere un riscontro pratico su quanto accaduto, creiamo una nuova Site Collection cliccando, nella HomePage della Central Administration, su Application Management -> Site Collection –> Create site collections.
Configuriamo titolo e template:
Figura 21: SharePoint Central Administration Console – Creazione Site Collection
Figura 22: SharePoint Central Administration Console – Creazione Site Collection
Clicchiamo su OK per confermare.
Terminata l’operazione riceveremo un messaggio informativo:
Figura 23: SharePoint Central Administration Console – Creazione Site Collection
Clicchiamo sulla URL http://svilsearch01/ per accedere al nsite:
Figura 24: SharePoint Site Collection – Homepage site Search
Provando a cercare, ad esempio, la stringa “C234”, ossia l’ID dell’elemento del primo nodo del nostro xml, otterremo il seguente risultato:
Figura 25: SharePoint Site Collection – Search
Nel prossimo articolo
Questa soluzione affronta solo uno dei possibili approcci per una differente configurazione della ricerca. Nel prossimo articolo analizzeremo altre soluzioni per una completa personalizzazione in grado di soddisfare anche i clienti più esigenti.