2012-06-13 12 views
5

In questo momento stiamo utilizzando SDL Tridion 5.3 a breve aggiorneremo a Tridion 2011 SP1. Durante l'aggiornamento a Tridion 2011 SP1 vogliamo anche utilizzare il motore di ricerca FAST FISE (SP 4) per implementare la ricerca sul sito web pubblicato.Come possiamo integrare Microsoft FAST con SDL Tridion 2011 SP1?

Qualcuno può aiutarci a capire come questo può essere fatto in relazione alle estensioni del Deployer e alle modifiche nel lato di Content Delivery (abbiamo implementazione .NET). Sono disponibili riferimenti API o documentazione di implementazione?

risposta

9

Non ho esperienza specifica con FAST, ma non può essere diverso da molti altri motori di ricerca per quanto riguarda l'integrazione di opere.

Il modo semplice: - Non fare nulla, FAST scansiona il tuo sito e raccogli tutte le informazioni di cui ha bisogno. Questo è il modo più economico di fare integrazioni di ricerca, e molte persone dimenticano che alla fine della giornata questo di solito copre circa il 98% delle loro esigenze.

Il modo in tempo reale: Scrivere un modulo Deployer che notifica FAST ogni volta che qualcosa è (non) pubblicato in modo che gli indici possano essere aggiornati (vedere alla fine per un modulo di esempio che può probabilmente iniziare).

Il sovra-ingegnerizzato modo: Scrivi un'estensione JPA-compliant di archiviazione per Tridion: http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/extending-content-delivery-storage-sdltridion-2011-1.aspx

Codice di esempio per un'estensione deployer:

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

Grazie Nuno per la risposta rapida. Utilizzeremo l'estensione del deployer, quindi durante la pubblicazione di contenuti di pagine, componenti e binari, spingeremo il contenuto/i contenuti dei metadati in FAST. A lato di consegna contenuto vogliamo utilizzare alcune API FAST che recupereranno il contenuto dalla raccolta FAST (database o filesystem). Non ho esperienza pratica nell'implementazione FAST. – user1453602

+0

@Nuno più fresco in tridion. quindi potresti spiegare come usare questo codice? quali sono i passi da seguire per utilizzare l'estensione del deployer? ho creato le pagine ora voglio fornire funzionalità di ricerca nelle pagine. una casella di testo con un pulsante di ricerca dovrebbe fornire questa funzionalità. Come questo sito Web ha in alto a destra. – Coder

+2

Il consiglio più forte di sempre - in primo luogo scopri come farlo senza Tridion. Quindi spostalo per far parte dell'output del tuo modello. Scherzi a parte, dimentica Tridion e provalo prima. Questa estensione del deployer è solo un esempio di come è possibile eseguire il codice durante la distribuzione, non ha nulla a che fare con la funzionalità di ricerca o di ricerca. –

Problemi correlati