2012-06-13 21 views
5

今すぐSDL Tridion 5.3を使用しています。すぐにTridion 2011 SP1にアップグレードします。 Tridion 2011 SP1にアップグレードする際には、公開されたWebサイトで検索を実装するためにFAST FISE(SP 4)検索エンジンも使用したいと考えています。Microsoft FASTとSDL Tridion 2011 SP1をどのように統合できますか?

Deployerエクステンションやコンテンツ配信側の変更(.NET実装があります)に関して、どのようにこれを行うことができるかを理解するのに役立ちます。利用可能なAPIリファレンスまたは実装ドキュメントはありますか?

答えて

9

私はFASTに関する特別な経験はありませんが、他の多くの検索エンジンとは一貫しています。

簡単な方法: - 何もしないで、サイトを高速クロールさせ、必要な情報をすべて収集します。これは検索の統合を行う最も費用対効果の高い方法であり、多くの人は、終わりには通常、要件の約98%をカバーすることを忘れています。

リアルタイム方法: インデックスが更新されるように、何かが公開されるたびにFASTに通知するDeployerモジュールを作成してください(おそらく、開始することができるサンプルモジュールの最後を参照してください)。

の過設計方法: TridionのためのJPA準拠のストレージ拡張を書く:デプロイヤ拡張のためのhttp://www.sdltridionworld.com/articles/sdltridion2011/tutorials/extending-content-delivery-storage-sdltridion-2011-1.aspx

サンプルコード:

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

おかげヌーノ迅速な応答のために。デプロイヤ拡張を使用しているので、ページ、コンポーネント、バイナリコンテンツを公開する際に、メタデータのコンテンツ/コンテンツをFASTにプッシュします。コンテンツ配信側では、FASTコレクション(データベースまたはファイルシステム)からコンテンツを取得するFAST APIを使用したいと考えています。私はFAST実装の経験がありません。 – user1453602

+0

@Nunoはtridionでもっと新鮮です。このコードの使い方を教えてください。デプロイヤ拡張を使用するための手順は何ですか?私はページを作成しました。検索機能をページに提供したいと考えています。検索ボタンが付いたテキストボックスは、このウェブサイトがこの極端な権利を持っているように、この機能を提供するはずです。 – Coder

+2

最強のアドバイス - Tridionなしでそれをやる方法をまず見つけてください。それをテンプレート出力の一部に移動します。真剣に、Tridionを忘れて、最初に試してみてください。このデプロイヤー拡張は、デプロイ時にコードを実行する方法の例に過ぎず、検索機能や検索機能とは関係ありません。 –

関連する問題