私は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());
}
}
}
おかげヌーノ迅速な応答のために。デプロイヤ拡張を使用しているので、ページ、コンポーネント、バイナリコンテンツを公開する際に、メタデータのコンテンツ/コンテンツをFASTにプッシュします。コンテンツ配信側では、FASTコレクション(データベースまたはファイルシステム)からコンテンツを取得するFAST APIを使用したいと考えています。私はFAST実装の経験がありません。 – user1453602
@Nunoはtridionでもっと新鮮です。このコードの使い方を教えてください。デプロイヤ拡張を使用するための手順は何ですか?私はページを作成しました。検索機能をページに提供したいと考えています。検索ボタンが付いたテキストボックスは、このウェブサイトがこの極端な権利を持っているように、この機能を提供するはずです。 – Coder
最強のアドバイス - Tridionなしでそれをやる方法をまず見つけてください。それをテンプレート出力の一部に移動します。真剣に、Tridionを忘れて、最初に試してみてください。このデプロイヤー拡張は、デプロイ時にコードを実行する方法の例に過ぎず、検索機能や検索機能とは関係ありません。 –