2012-06-13 12 views
5

W tej chwili używamy SDL Tridion 5.3 wkrótce zostanie uaktualniony do Tridion 2011 SP1. Podczas aktualizacji do wersji Tridion 2011 SP1 chcemy również użyć wyszukiwarki FAST FISE (SP 4) do implementacji wyszukiwania na opublikowanej stronie internetowej.Jak możemy zintegrować Microsoft FAST z SDL Tridion 2011 SP1?

Czy ktoś może nam pomóc w zrozumieniu, w jaki sposób można to zrobić w odniesieniu do rozszerzeń wdrażającego, jak również zmian w zakresie dostarczania treści (mamy implementację .NET). Czy dostępne jest odniesienie do interfejsu API lub dokumentacja implementacji?

Odpowiedz

9

Nie mam określonego doświadczenia z FAST, ale nie mogę się różnić od wielu innych wyszukiwarek w zakresie integracji prac.

Łatwy sposób: - Nic nie rób, pozwól FASTowi zindeksować Twoją witrynę i zebrać wszystkie potrzebne informacje. Jest to najbardziej opłacalny sposób na integrację z wyszukiwaniem, a wielu ludzi zapomina, że ​​pod koniec dnia zazwyczaj pokrywa to ~ 98% ich wymagań.

Sposób w czasie rzeczywistym: Napisz moduł Deployer, który powiadamia FAST za każdym razem, gdy coś jest (nie) opublikowane, aby indeksy mogły być aktualizowane (patrz na końcu przykładowy moduł, który prawdopodobnie pozwoli Ci zacząć).

Nadmierne inżynierii sposób: Napisz JPA zgodnego rozszerzenie do przechowywania Tridion: http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/extending-content-delivery-storage-sdltridion-2011-1.aspx

Przykładowy kod rozszerzeniem 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

Thanks Nuno za szybką odpowiedź. Będziemy używać rozszerzenia wdrażającego, więc podczas publikowania strony, komponentu, zawartości binarnej będziemy przesyłać zawartość/zawartość metadanych do FAST. Po stronie dostarczania treści chcemy używać niektórych interfejsów API FAST, które będą pobierać zawartość z kolekcji FAST (bazy danych lub systemu plików). Nie mam żadnych doświadczeń w implementacji FAST. – user1453602

+0

@Nuno świeższe w tridion. więc czy mógłbyś wyjaśnić, jak korzystać z tego kodu? Jakie kroki należy wykonać, aby użyć rozszerzenia deployer? utworzyłem strony. teraz chcesz zapewnić funkcje wyszukiwania na stronach. pole tekstowe z przyciskiem wyszukiwania powinno zapewniać tę funkcjonalność. Podobnie jak ta strona internetowa ma skrajne prawe. – Coder

+2

Najsilniejsza porada w historii - najpierw dowiedz się jak to zrobić bez Tridion. Następnie przenieś go, aby był częścią wyjściowego szablonu. Poważnie, zapomnij o Tridionie i wypróbuj go najpierw. To rozszerzenie wdrażania jest tylko przykładem tego, jak uruchomić kod podczas wdrażania, nie ma nic wspólnego z funkcjami wyszukiwania lub wyszukiwania. –

Powiązane problemy