Solr6 Jython で フィードの前処理をする メモ

1. Jython のインストール
Jythonスタンドアローン版を下記からダウンロード
http://www.jython.org/downloads.html

sudo mkdir /var/solr/data/コア名/lib

sudo cp jython-standalone-2.7.0.jar /var/solr/data/コア名/lib

sudo /etc/init.d/solr restart <- Solr 再起動


2. solrconfig.xml の変更
拡張子.jyは使えない

  <initParams path="/update/**">
    <lst name="defaults">
      <!-- str name="update.chain">add-unknown-fields-to-the-schema</str -->
      <str name="update.chain">script</str>
    </lst>
  </initParams>

    <updateRequestProcessorChain name="script">
      <processor class="solr.StatelessScriptUpdateProcessorFactory">
        <str name="script">update-script.py</str>
      </processor>
      <processor class="solr.RunUpdateProcessorFactory" />
    </updateRequestProcessorChain>


3. update-script.py を書く
下の例だとSolrのログファイルにメッセージが出力される
デフォルトでは /var/solr/logs/solr.log

def processAdd(cmd):
  doc = cmd.solrDoc
  id = doc.getFieldValue("id")
  logger.info("update-script#processAdd: id=" + id)

def processDelete(cmd):
    logger.info("update-script#processDelete")

def processMergeIndexes(cmd):
    logger.info("update-script#processMergeIndexes")

def processCommit(cmd):
    logger.info("update-script#processCommit")

def processRollback(cmd):
    logger.info("update-script#processRollback")

def finish():
    logger.info("update-script#finish")