2012-06-13 12 views
5

En este momento estamos usando SDL Tridion 5.3 y pronto nos actualizaremos a Tridion 2011 SP1. Al actualizar a Tridion 2011 SP1, también queremos utilizar el motor de búsqueda FAST FISE (SP 4) para implementar la búsqueda en el sitio web publicado.¿Cómo podemos integrar Microsoft FAST con SDL Tridion 2011 SP1?

¿Alguien puede ayudarnos a comprender cómo se puede hacer esto con respecto a las extensiones de Deployer, así como a los cambios en el lado de Entrega de contenido (tenemos la implementación de .NET). ¿Hay alguna referencia API o documentación de implementación disponible?

Respuesta

9

No tengo experiencia específica con FAST, pero no puedo diferenciarme de muchos otros motores de búsqueda en cuanto a la integración de trabajos.

La manera fácil: - No haga nada, deje que FAST rastree su sitio y reúna toda la información que necesita. Esta es la forma más rentable de hacer integraciones de búsqueda, y muchas personas olvidan que al final del día esto generalmente cubre ~ 98% de sus requisitos.

La manera en tiempo real: Escriba un módulo Deployer que notifique FAST cada vez que algo se (des) publique para que los índices puedan actualizarse (ver al final un ejemplo de módulo que probablemente pueda comenzar).

La forma más de la ingeniería: Escribe una extensión compatible con la APP de almacenamiento para Tridion: http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/extending-content-delivery-storage-sdltridion-2011-1.aspx

Código de ejemplo para una extensión de programa de implementación:

import java.util.Iterator; 

import com.tridion.configuration.Configuration; 
import com.tridion.configuration.ConfigurationException; 
import com.tridion.deployer.Module; 
import com.tridion.deployer.ProcessingException; 
import com.tridion.deployer.Processor; 

import com.tridion.transport.transportpackage.Binary; 
import com.tridion.transport.transportpackage.BinaryKey; 
import com.tridion.transport.transportpackage.Component; 
import com.tridion.transport.transportpackage.ComponentKey; 
import com.tridion.transport.transportpackage.MetaData; 
import com.tridion.transport.transportpackage.MetaDataFile; 
import com.tridion.transport.transportpackage.Page; 
import com.tridion.transport.transportpackage.PageKey; 
import com.tridion.transport.transportpackage.ProcessorInstructions; 
import com.tridion.transport.transportpackage.Section; 
import com.tridion.transport.transportpackage.TransportPackage; 

import org.slf4j.LoggerFactory; 
import org.slf4j.Logger; 


public class CustomCacheNotificationDeploy extends Module { 

    String action = null; 
    Logger log = null; 
    MetaDataFile pageMeta = null; 
    MetaDataFile componentMeta = null; 
    MetaDataFile binaryMeta = null; 
    public CustomCacheNotificationDeploy(Configuration config, Processor processor) 
      throws ConfigurationException { 
     super(config, processor); 
     log = LoggerFactory.getLogger(getClass()); 
     // TODO Auto-generated constructor stub 
    } 

    @SuppressWarnings("deprecation") 
    public void process(TransportPackage data) throws ProcessingException{ 
     ProcessorInstructions instructions = data.getProcessorInstructions(); 
     action = instructions.getAction(); 
     MetaData pageMetaInfo = instructions.getMetaData("Pages"); 
     MetaData componentMetaInfo = instructions.getMetaData("Components"); 
     MetaData binaryMetaInfo = instructions.getMetaData("Binaries"); 
     pageMeta = data.getMetaData("Pages", pageMetaInfo.getName()); 
     componentMeta = data.getMetaData("Components", componentMetaInfo.getName()); 
     binaryMeta = data.getMetaData("Binaries", binaryMetaInfo.getName()); 

     log.debug("Action " + action + " started for publication " + instructions.getPublicationId()); 

     Section section = null; 
     Iterator<Section> Sections = instructions.getSections(); 
     for(; Sections.hasNext(); processSection(section)) 
     { 
      section = Sections.next(); 
     } 

    } 

    protected void processSection(Section section) 
    { 
     log.debug("Processing Section " + section.getName()); 
     Iterator iterator = section.getFileItems(); 
     Object item; 
     for(; iterator.hasNext(); processItem(item, section)) 
     { 
      item = iterator.next(); 
     } 
     Section subSection; 
     for(Iterator i$ = section.getSubSections().iterator(); i$.hasNext(); processSection(subSection)) 
      subSection = (Section)i$.next(); 
    } 

    protected void processItem(Object obj, Section section) 
    { 
     if(obj instanceof PageKey) 
     { 
      log.debug("Object is Page"); 
      PageKey key = (PageKey) obj; 
      Page page = (Page)pageMeta.getMetaData(key); 
      log.debug("Page being deployed is " + page.getId() + " with URL " + page.getURLPath()); 
     } 
     if(obj instanceof ComponentKey) 
     { 
      log.debug("Object is Component"); 
      ComponentKey key = (ComponentKey) obj; 
      Component component = (Component)componentMeta.getMetaData(key); 
      log.debug("Component being deployed is " + component.getId()); 
     } 
     if(obj instanceof BinaryKey) 
     { 
      log.debug("Object is Binary"); 
      BinaryKey key = (BinaryKey) obj; 
      Binary binary = (Binary)binaryMeta.getMetaData(key); 
      log.debug("Binary being deployed is " + binary.getId() + " with URL " + binary.getURLPath()); 
     } 
    } 
} 
+0

Gracias Nuno de respuesta rápida. Usaremos la extensión deployer, de modo que al publicar páginas, componentes y contenido binario, impulsaremos el contenido/contenido de metadatos a FAST. En el lado de la entrega de contenido queremos usar algunas API de FAST que buscarán contenido de la colección FAST (base de datos o sistema de archivos). No tengo experiencia práctica en la implementación de FAST. – user1453602

+0

@Nuno más fresco en tridion. ¿podrías explicar cómo usar este código? ¿Cuáles son los pasos a seguir para usar la extensión deployer? He creado las páginas. ahora quiero proporcionar funcionalidad de búsqueda en páginas. un cuadro de texto con un botón de búsqueda debería proporcionar esta funcionalidad. Al igual que este sitio web tiene en la parte superior derecha extrema. – Coder

+2

El consejo más grande jamás visto: primero averigüe cómo hacerlo sin Tridion. A continuación, muévelo para que sea parte de la salida de su plantilla. En serio, olvida a Tridion y pruébalo primero. Esta extensión deployer es solo un ejemplo de cómo puede ejecutar código durante la implementación, no tiene nada que ver con la funcionalidad de búsqueda o búsqueda. –

Cuestiones relacionadas