//
you're reading...
Custom Project, Powershell

Pipeline Extensibility: Adding custom “stage”

“The item processing pipeline in FAST Search Server 2010 for SharePoint performs various tasks, such as text extraction, language detection, and tokenization to prepare an item from a content source for indexing and searching.Some applications may require extensions to the item processing. You can generate additional searchable metadata from the content. The pipeline extensibility interface enables you to run custom processing commands for each item that is fed through the pipeline. A command takes a set of crawled properties as input, processes them, and outputs another set of crawled properties. The communication between the item processing pipeline and the custom command occurs by using temporary XML files. The pipeline extensibility processing takes place before crawled properties are mapped to managed properties.” -msdn-

Lavorare di PipelineExtensibility

1- Creo la nuova Categoria di crawled properties che chiamo “Extensibility”, dove metterò tutte le proprietà create da me e popolate dal nuovo stage di pipeline

$guid = [guid]::NewGuid()

New-FASTSearchMetadataCategory -Name Extensibility -Propset $guid

2- Creo la nuova CP “areaapp” nella categoria Extensibility.

New-FASTSearchMetadataCrawledProperty -Name areaapp -Propset $Guid

3- Creo la nuova MP “titolosito” e faccio il MAPPING tra le due nuove proprietà; possiamo controllare da FAST Search Administration se gli update sono stati effettuati correttamente

4- Attivo FFDDumper e lancio Full Crawl del Content SSA, per trovare tra i log le mie CP di input.

5- Individuate le proprietà, scrivo la Console Application che popolerà la CP “areaapp” del dato interessato

using System;
using System.Collections.Generic;
using System.Xml.Linq;
using System.Linq;
using System.Text;

namespace Fast4Telecom
{
class SiteName
{
//instanziare le categorie con relativi propset per input
public static readonly Guid FastCategory = new Guid(“00130329-0000-0130-C000-000000131346”);
public static readonly Guid FastCategory1 = new Guid(“00130329-0000-0130-C000-000000131346”);

//instanziare le categorie con relativi propset per output
public static readonly Guid Extensibility = new Guid(“922a295a-d4cb-4ddd-bbfe-b681bec6cc23”);

static void Main(string[] args)
{
XDocument inputDoc = XDocument.Load(args[0]);
string titolo = “”;

//Leggiamo il valore della CP input che restituisce l’url
var res = from cp in inputDoc.Descendants(“CrawledProperty”)
where new Guid(cp.Attribute(“propertySet”).Value).Equals(FastCategory) &&
cp.Attribute(“propertyName”).Value == “ows_SPSiteURL” &&
cp.Attribute(“varType”).Value == “31”
select cp.Value;
String url = res.First();

//se l’url ci piace
if (res.Count() > 0 && url.StartsWith(“http://intranet”))
{
//Leggiamo il valore della seconda CP di input che ci tira fuori il nome del sito
var res1 = from cp in inputDoc.Descendants(“CrawledProperty”)
where new Guid(cp.Attribute(“propertySet”).Value).Equals(FastCategory1) &&
cp.Attribute(“propertyName”).Value == “ows_SiteName” &&
cp.Attribute(“varType”).Value == “31”
select cp.Value;

//se il nome del sito ci piace lo mettiamo in una variabile
if (res1.Count() > 0 && res1.First() != “it”)
{
titolo = res1.First();
}
}
//scriviamo la nuova variabile nella CP di OutPut
XElement outputElement = new XElement(“Document”);
outputElement.Add(
new XElement(“CrawledProperty”,
new XAttribute(“propertySet”, Extensibility),
new XAttribute(“propertyName”, “areaapp”),
new XAttribute(“varType”, 31),
titolo)
);
outputElement.Save(args[1]);
}
}
}

6- Buildare il progetto, copiare l’eseguibile e incollarlo nella cartelle FASTSearch/bin di tutte le macchine fast della Farm

7-Modificare il file pipelineextensibilty.xml (FASTSearch/etc) su tutte i server Fast, per aggiornare lo schema della pipeline aggiungendo il Run command, le proprietà in input e quelle in output:

<!– For permissions and the most current information about FAST Search Server 2010 for SharePoint configuration files, see the online documentation, (http://go.microsoft.com/fwlink/?LinkId=1632279). –>

<PipelineExtensibility>

<Run command=”SiteName.exe %(input)s %(output)s”>
<Input>
<CrawledProperty propertySet=”00130329-0000-0130-C000-000000131346″ varType=”31″ propertyName=”ows_SPSiteURL”/>
<CrawledProperty propertySet=”00130329-0000-0130-c000-000000131346″ varType=”31″ propertyName=”ows_SiteName”/>
</Input>
<Output>
<CrawledProperty propertySet=”922a295a-d4cb-4ddd-bbfe-b681bec6cc23″ varType=”31″ propertyName=”areaapp”/>

</Output>
</Run>

</PipelineExtensibility>

8- Start Full Crawl e la CP si popolerà all’inizio del nuovo stage, così potrete utilzzare il nuovo refiner attraverso il Mapping eseguito prima..

Nice 🙂

Annunci

Informazioni su matteolenzo

Fast Search for Sharepoint 2010 Junior developer/consultant

Discussione

Non c'è ancora nessun commento.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: