2012-06-13 16 views
5

Şu anda yakında 2011 SP1'i tridion yükseltme edilecektir SDL tridion 5.3 kullanıyor. 2011 SP1'i tridion yükseltme yaparken biz de yayınlanan web sitesinde arama uygulanması için FAST FISE (SP 4) arama motorunu kullanmak istiyorum. herkes bu Harekatçısının uzantıları bakımından hem de İçerik Yayınlama tarafında değişiklikler ile yapılabilir nasıl anlamada bize yardım edebilirMicrosoft FAST'i SDL Tridion 2011 SP1 ile nasıl entegre edebiliriz?

(biz .NET uygulaması var). Mevcut herhangi bir API referansı veya uygulama belgesi var mı?

cevap

9

Ben FAST ile belirli bir deneyimi yok ama bildiğim kadarıyla eserler entegre gibi birçok diğer arama motorlarından farklı olamaz.

kolay bir şekilde

: - let HIZLI sitenizi taramasını ve gereksinim duyduğu bilgileri toplamak, hiçbir şey vermeyin. Bu arama entegrasyonlar yapmanın en uygun maliyetli yoludur ve birçok kişi bu genellikle ~ onların gereksinimlerinin% 98 kapsayan günün sonunda unutma.

Gerçek zamanlı yol: İndekslerin güncellenebilmesi için bir şey yayınlanmadığında FAST'a bildiren bir Deployer modülü yazın (büyük olasılıkla başlamanıza neden olabilecek bir örnek modülün sonuna bakın).

aşırı mühendislik yolu: JPA uyumlu tridion için depolama uzantısını yazın: Bir deployer uzantısı için http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/extending-content-delivery-storage-sdltridion-2011-1.aspx

Numune kodu: Hızlı cevap için

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

Teşekkür Nuno. İşveren uzantısını kullanıyor olacağız, bu nedenle sayfa, bileşen, ikili içerik yayınlarken, meta veri içeriğini/içeriği FAST'e zorlayacağız. İçerik yayınlama tarafında, FAST koleksiyonundan (veritabanı veya dosya sistemi) içerik getirecek bazı FAST API'larını kullanmak istiyoruz. FAST uygulamasında deneyim sahibi değilim. – user1453602

+0

@Nuno fresher tridion içinde. Bu kodu nasıl kullanacağınızı açıklayabilir misiniz? dağıtıcı eklentisini kullanmak için izlenecek adımlar nelerdir? sayfaları oluşturdum. şimdi sayfalarda arama işlevselliği sağlamak istiyorum. Bir arama düğmesi ile bir metin kutusu bu işlevselliği sağlamalıdır. Bu web sitesi gibi en aşırı sağda. – Coder

+2

En güçlü tavsiye hiç - önce Tridion olmadan nasıl yapılacağını öğrenin. Ardından, şablon çıktınızın bir parçası olarak hareket ettirin. Cidden, Tridion'u unut ve önce dene. Bu dağıtıcı uzantısı, dağıtım sırasında kodun nasıl çalıştırılabileceğinin sadece bir örneğidir, arama veya arama işlevselliğiyle hiçbir ilgisi yoktur. –

İlgili konular