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

1. Jython のインストール
Jythonスタンドアローン版を下記からダウンロードして
http://www.jython.org/downloads.html
example/solr/collection1/lib に置く

$ls example/solr/collection1/lib
jython-standalone-2.7.0.jar


2. solrconfig.xml の変更

  <requestHandler name="/update" class="solr.UpdateRequestHandler">
       <lst name="defaults">
         <str name="update.chain">script</str>
       </lst>
  </requestHandler>

    <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のログファイルにメッセージが出力される
デフォルトでは example/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")