カスタムURPの例(廃止予定)

カスタムの更新要求プロセッサー(URP)は、Apache Solr URPを拡張します。

DSE Searchには、Solr更新のプラグインAPIとCassandraDocumentReaderのプラグインのリリース済みバージョンが含まれています。プラグインAPIは、データが送信される前に、セカンダリ・インデックス作成APIからのデータを変換します。CassandraDocumentReaderのプラグインは、データベースからの結果データをDSE Searchに変換します。

注: DSEカスタムURPの実装は廃止されました。カスタムURPはほとんどの場合不要です。代わりに、DataStaxはフィールド入力/出力(FIT)トランスフォーマーのAPIを使用することをお勧めします。

アプリケーションで、インデックス・スキーマに従ってマップしてインデックスを作成する前に、APIを使用して検索ドキュメントを微調整することができます。

フィールド入力トランスフォーマー(FIT)の日付フィールド値には、末尾に「z」が必要です。

手順

APIを使用するには:
  1. solrconfig.xmlでカスタムURPを構成します。
    <dseUpdateRequestProcessorChain name="dse">
     <processor class="com.datastax.bdp.search.solr.functional.DSEUpdateRequestProcessorFactoryExample">
     </processor>
    </dseUpdateRequestProcessorChain>
  2. Solr UpdateRequestProcessorを拡張するカスタムURPを使用するクラスを作成します。例を次に示します。
    package com.datastax.bdp.search.solr.functional;
    
    import java.io.IOException;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.datastax.bdp.search.solr.handler.update.CassandraAddUpdateCommand;
    import com.datastax.bdp.search.solr.handler.update.CassandraCommitUpdateCommand;
    import org.apache.solr.update.AddUpdateCommand;
    import org.apache.solr.update.CommitUpdateCommand;
    import org.apache.solr.update.processor.UpdateRequestProcessor;
    
    public class TestUpdateRequestProcessor extends UpdateRequestProcessor
    {
        protected final Logger logger = LoggerFactory.getLogger(TestUpdateRequestProcessor.class);
    
        public TestUpdateRequestProcessor(UpdateRequestProcessor next)
        {
            super(next);
        }
    
        public void processAdd(AddUpdateCommand cmd) throws IOException
        {
            if (cmd instanceof CassandraAddUpdateCommand)
            {
                logger.info("Processing Cassandra-actuated document update.");
            }
            else
            {
                logger.info("Processing HTTP-based document update.");
            }
            
            super.processAdd(cmd);
        }
    
        public void processCommit(CommitUpdateCommand cmd) throws IOException
        {
            if (cmd instanceof CassandraCommitUpdateCommand)
            {
                logger.info("Processing DSE-actuated commit.");
            }
            else
            {
                logger.info("Processing client-actuated commit.");
            }
            super.processCommit(cmd);
        }
    }
  3. クラスをJARにエクスポートし、そのJARをこの場所に配置します。
    • tarボール・インストール: install-location/resources/solr/lib
    • パッケージ・インストール: /usr/share/dse/solr/lib
    JARは自動的にCLASSPATHに追加されます。
  4. 実装をテストします。例を次に示します。
    package com.datastax.bdp.search.solr.functional;
    
    import com.datastax.bdp.search.solr.handler.update.DSEUpdateProcessorFactory;
    import org.apache.solr.core.SolrCore;
    import org.apache.solr.update.processor.UpdateRequestProcessor;
    
    public class DSEUpdateRequestProcessorFactoryExample extends DSEUpdateProcessorFactory
    {
        SolrCore core;
        
        public DSEUpdateRequestProcessorFactoryExample(SolrCore core) {
            this.core = core;
        }
        
        public UpdateRequestProcessor getInstance(
                UpdateRequestProcessor next)
        {
            return new TestUpdateRequestProcessor(next);
        }
    }