Integración de un componente de procesamiento de elementos externo

Última modificación: lunes, 30 de agosto de 2010

Hace referencia a: SharePoint Server 2010

En este artículo
Información general sobre la extensibilidad de la canalización
Entorno del comando
Extensibilidad de la canalización frente a IFilter
Tratamiento de las propiedades rastreadas
Personalización de pipelineextensibility.xml
Formato de archivo de pipelineextensibility.xml
Formato de archivo de entrada/salida
Creación de un comando personalizado

Se aplica a: Microsoft FAST Search Server 2010 for SharePoint
La canalización del procesamiento de elementos prepara un elemento de un origen de contenido para los procesos de indización y búsqueda. Esta preparación incluye la extracción de texto, la detección del idioma y la tokenización.

Es posible que algunas aplicaciones requieran extensiones al procesamiento de elementos. En este sentido, puede generar más metadatos de búsqueda desde el contenido o reenviar información desde el elemento a una aplicación de terceros con fines de estadística o supervisión.

En este tema se describe la forma de crear un componente de procesamiento de elementos externo para FAST Search Server 2010 for SharePoint de la siguiente manera:

Información general sobre la extensibilidad de la canalización

La canalización del procesamiento de elementos en FAST Search Server 2010 for SharePoint realiza diversas tareas, como la extracción de texto, la detección del idioma y la tokenización, con el propósito de preparar un elemento de un origen de contenido para los procesos de indización y búsqueda.

La interfaz de extensibilidad de la canalización permite ejecutar comandos de procesamiento personalizados para cada elemento que se alimenta a través de la canalización. Un comando toma un conjunto de propiedades rastreadas como entrada, las procesa y emite otro conjunto de propiedades rastreadas. La comunicación entre la canalización del procesamiento de elementos y el comando personalizado se produce mediante archivos XML temporales. El procesamiento de la extensibilidad de la canalización se lleva a cabo antes de que las propiedades rastreadas se asignen a las propiedades administradas.

Las propiedades rastreadas de entrada pueden ser metadatos recuperados del origen de contenido. También se puede usar el procesamiento de elementos XML personalizado (vea Procesamiento de elementos XML personalizados) en los elementos XML recuperados para crear propiedades rastreadas a partir de los datos XML.

Es necesario especificar los comandos que se van a ejecutar en pipelineextensibility.xml. El formato de este archivo de configuración se especifica en el Esquema de configuración de extensibilidad de canalización. Para cada comando, enumere las propiedades rastreadas que dicho comando va a recibir como entrada y, asimismo, las que va a emitir como salida.

Nota importanteImportante

Los cambios que realice en este archivo se sobrescribirán y se perderán si instala una actualización o Service Pack de FAST Search Server 2010 for SharePoint.

No se ha realizado una copia de seguridad de este archivo de configuración mediante el procedimiento estándar de copia de seguridad de FAST Search Server 2010 for SharePoint. Para evitar perder los cambios, asegúrese de realizar una copia de seguridad de este archivo tras modificarlo.

Asegúrese de volver a aplicar los cambios en el archivo de configuración tras instalar una actualización o Service Pack de FAST Search Server 2010 for SharePoint.

Entorno del comando

Antes de ejecutar un comando, las propiedades rastreadas de entrada se recopilan en un archivo XML temporal. A continuación, el comando lo lee y emite las propiedades rastreadas de resultado a otro archivo XML temporal. Las rutas de acceso a los archivos de entrada y de salida están disponibles como secuencias de cadena especiales cuando se especifica el comando que se va a ejecutar. El formato de archivo del archivo de entrada y de salida es idéntico y se especifica en el Esquema de interfaz de canalización de extensibilidad.

Los comandos se ejecutan en un entorno de espacio aislado que usa un número de procesos, una memoria y un tiempo de procesamiento limitados. Además de a los archivos de entrada y de salida, los comandos solo tienen acceso de lectura y escritura a los archivos de acceso público.

Se proporciona acceso completo a la red. Si no necesita acceso a la red, cree una regla de firewall para bloquear la aplicación cuando se encuentre en peligro.

Si tiene problemas para ejecutar el comando en un entorno de espacio aislado, considere la posibilidad de cambiar el código de forma que la entrada se reenvíe a un proceso o servicio independiente que use sockets y, a continuación, pueda llevar a cabo el trabajo principal.

Extensibilidad de la canalización frente a IFilter

Para implementar la extracción de texto para un nuevo formato de documento, implemente un IFilter y regístrelo con FAST Search Server 2010 for SharePoint. También puede implementar la compatibilidad con la extracción de texto mediante la característica de extensibilidad de la canalización. Para obtener más información, vea Configuración de FAST Search Server for SharePoint para usar un IFilter de terceros.

Tratamiento de las propiedades rastreadas

Las propiedades rastreadas son metadatos que se extraen de orígenes de contenido a fin de que los datos se encuentren disponibles para la búsqueda. Las propiedades rastreadas normalmente se conocen a través de la SSA de contenido u otros conectores de FAST Search Server 2010 for SharePoint, pero también pueden crearse durante el procesamiento de elementos mediante un IFilter o una fase de procesamiento personalizado.

Una propiedad rastreada se define de forma exclusiva mediante Name, Propset y VariantType. Puede crear una propiedad rastreada personalizada mediante el cmdlet de Windows PowerShellNew-FASTSearchMetadataCrawledProperty. Puede optar por usar un Propset existente o crear un Propset para las propiedades rastreadas personalizadas.

Puede asignar cada propiedad rastreada a una propiedad administrada, o bien definir una categoría de propiedades rastreadas y asignar toda la categoría al índice de texto completo predeterminado. Para obtener más información, vea el tema sobre cómo administrar propiedades rastreadas mediante Windows PowerShell (FAST Search Server 2010 for SharePoint) y la referencia del esquema de índice.

Solo se admiten tipos de propiedad rastreada que puedan asignarse a una propiedad administrada.

Un conjunto de propiedades especiales contiene las propiedades rastreadas que se crean dentro de la canalización del procesamiento de elementos. Se puede transferir un subconjunto de estas propiedades de solo lectura al comando de extensibilidad de la canalización. En él se incluyen las propiedades url, data y body. La propiedad data contiene el contenido binario del documento de origen codificado en base64. Para obtener más información, vea Elemento CrawledProperty [esquema de configuración de extensibilidad de la canalización].

Personalización de pipelineextensibility.xml

Use un editor de texto o un editor XML para personalizar este archivo.

Nota

Para modificar un archivo de configuración, debe ser miembro del grupo local de FASTSearchAdministrators en el equipo donde FAST Search Server 2010 for SharePoint está instalado.

Para editar pipelineextensibility.xml

  1. En cada servidor de la implementación de conjunto o granja de servidores de FAST Search Server 2010 for SharePoint, actualice %FASTSEARCH%\etc\pipelineextensibility.xml con los cambios.

  2. En el nodo de administración de FAST Search Server 2010 for SharePoint, ejecute el comando psctrl reset para restablecer todos los procesadores de elementos que actualmente se encuentran en ejecución en el sistema.

  3. Guarde una copia de seguridad del archivo, ya que no forma parte del proceso de copia de seguridad y restauración de la configuración en FAST Search Server 2010 for SharePoint.

  4. Deberá actualizar este archivo desde la copia de seguridad después de aplicar una actualización de software. Para obtener más información, vea la nota al respecto en Información general sobre la extensibilidad de la canalización.

Formato de archivo de pipelineextensibility.xml

Esta es la estructura básica del archivo pipelineextensibility.xml.

<PipelineExtensibility>
    <Run command='CommandName'>
        <Input>
            <CrawledProperty propertySet='GUID' propertyName='PropertyName' propertyId='PropertyId' varType='PropertyType'>
        </Input>
        <Output>
            <CrawledProperty propertySet='GUID' propertyName='PropertyName' propertyId='PropertyId' varType='PropertyType' defaultValue='DefaultValue'>
        </Output>
    </Run>
</PipelineExtensibility>

Para obtener más información sobre la sintaxis XML, vea Esquema de configuración de extensibilidad de canalización.

Puede especificar varios elementos Run, que se procesarán en el orden en que se producen en el archivo de configuración. También puede especificar varios elementos CrawledProperty en los elementos Input y Output.

En el siguiente ejemplo se muestra la configuración de un comando que lee la propiedad Author (identificada mediante property ID 4) del conjunto de propiedades de información de resumen y emite otra propiedad denominada MyProperty. Las rutas de acceso a los archivos de entrada y de salida se encuentran disponibles como las secuencias de cadena especiales "%(input)s" y "%(output)s", como se indica a continuación.

<PipelineExtensibility>
  <Run command="sample.exe %(input)s %(output)s">
    <Input>
      <CrawledProperty propertySet="f29f85e0-4ff9-1068-ab91-08002b27b3d9" varType="31" propertyId="4"/>
    </Input>
    <Output>
      <CrawledProperty propertySet="d5cdd505-2e9c-101b-9397-08002b2cf9ae" varType="31" propertyName="MyProperty"/>
    </Output>
  </Run>
</PipelineExtensibility>

Pueden recuperar propertySet y varType para una propiedad rastreada mediante el cmdlet de Windows PowerShellGet-FASTSearchMetadataCrawledProperty. En el siguiente ejemplo se muestra cómo realizar esta operación para la propiedad rastreada denominada fileextension.

PS C:\FASTSearch\etc> Get-FASTSearchMetadataCrawledProperty -name fileextension

CategoryName       : Basic
IsMappedToContents : False
IsNameEnum         : False
IsMultiValued      : False
Name               : FileExtension
Propset            : 0b63e343-9ccc-11d0-bcdb-00805fccce04
VariantType        : 31

Formato de archivo de entrada/salida

Los archivos de entrada y de salida intermedios que contienen las propiedades rastreadas usan el mismo formato XML.

Esta es la estructura básica de los archivos intermedios.

<Document>
 <CrawledProperty propertySet='GUID' propertyName='PropertyName' propertyId='PropertyId' varType='PropertyType'>propertyValue</CrawledProperty>
</Document>

Para obtener información sobre la sintaxis XML, vea Esquema de interfaz de canalización de extensibilidad.

En el siguiente ejemplo se especifica el archivo de entrada para el ejemplo que se muestra en Formato de archivo de pipelineextensibility.xml. En este ejemplo se supone que el creador ha sido John Doe.

<Document>
  <CrawledProperty propertySet="f29f85e0-4ff9-1068-ab91-08002b27b3d9" 
                   varType="31" propertyId="4">John Doe</CrawledProperty>
</Document>

La canalización del procesamiento de elementos de FAST Search Server 2010 for SharePoint siempre codifica el archivo de entrada en UTF-8. Por lo tanto, el archivo de salida que el comando cree debe codificarse en UTF-8 o UTF-16 para garantizar que todos los caracteres se interpreten correctamente.

Creación de un comando personalizado

La secuencia de cadena especial "%(input)s" en el atributo comand se reemplaza por la ruta de acceso real del archivo de entrada. Si el elemento Input incluye algún elemento CrawledProperty, esta secuencia es obligatoria.

La secuencia de cadena especial "%(output)s" en command se reemplaza por la ruta de acceso real del archivo de salida. Si el elemento Output incluye algún elemento CrawledProperty, esta secuencia es obligatoria y se debe generar un archivo de salida válido, que debe contener al menos el elemento de nivel superior Document, como se indica a continuación.

<Document></Document>

El comando puede emitir un subconjunto de los elementos CrawledProperty enumerados.

La canalización del procesamiento de elementos de FAST Search Server 2010 for SharePoint usa el código de salida del comando para saber si éste se ejecutó correctamente. Un código de salida de cero indica que el comando se ejecutó correctamente y que lo hizo desde el principio hasta el final. Solo se debe usar un código de salida distinto de cero cuando se produce una situación anómala que impide que el comando lleve a cabo su tarea (por ejemplo, cuando existen errores en un archivo de configuración, cuando falta un archivo DLL o cuando no existen excepciones sin controlar). En estos casos, el comando debe registrar un mensaje breve para la salida estándar o un error estándar donde se explique el problema. Este mensaje se reenviará al registro de rastreos.

Antes de aplicar la configuración a la instalación, compruebe que el comando realmente funciona según lo esperado en cada nodo; para ello, cree archivos de entrada de ejemplo e invoque manualmente el comando junto con los archivos de entrada.

A continuación se muestra un ejemplo de C# sencillo de sample.exe en la sección de formato de archivo de pipelineextensibility.xml. En él, se agrega un prefijo a la propiedad de entrada con una cadena fija "Mr./Ms." y se genera el resultado en una nueva propiedad.

using System;using System.Collections.Generic;
using System.Linq;using System.Xml.Linq;
using System.Text;namespace 
Sample{
    class Sample
    {
        public static readonly Guid FMTID_SummaryInformation = new Guid("F29F85E0-4FF9-1068-AB91-08002B27B3D9");
        public static readonly Guid FMTID_UserDefinedProperties = new Guid("D5CDD505-2E9C-101B-9397-08002B2CF9AE");
        static void Main(string[] args)
        {            // Fetch the author property from the input item
            XDocument inputDoc = XDocument.Load(args[0]);
            var res = from cp in inputDoc.Descendants("CrawledProperty")
                      where new Guid(cp.Attribute("propertySet").Value).Equals(FMTID_SummaryInformation) &&
                      cp.Attribute("propertyId").Value == "4" &&
                      cp.Attribute("varType").Value == "31"
                      select cp.Value;            // Create the output item
            XElement outputElement = new XElement("Document");
            // Add a crawled property where the author is prefixed with "Mr./Mrs."
            if (res.Count() > 0 && res.First().Length > 0)
            {
                outputElement.Add(
                    new XElement("CrawledProperty",
                        new XAttribute("propertySet", FMTID_UserDefinedProperties),
                        new XAttribute("propertyName", "MyProperty"),
                        new XAttribute("varType", 31),
                            "Mr./Mrs. " + res.First())
                        );
            }
            outputElement.Save(args[1]);
        }
    }
}

Vea también

Conceptos

Esquema de configuración de extensibilidad de canalización

Esquema de interfaz de canalización de extensibilidad

Procesamiento de elementos XML personalizados