2012年1月14日土曜日

Lucene ソースコードリーディング会に参加しました

Lucene ソースコードリーディング会に参加しました。

最近のAnalyzer/Tokenizerの変更点が知りたかったので、Lucene 3.5のそこら辺を中心に読みました。
見ながら気になったことだけみたので、まとまりがありませんが箇条書きでメモします。

  • Analyzer#assertFinalの存在
    • privateなのでAPIドキュメントにはありませんが、tokenStream, reuseableTokenStreamがfinalかどうかをチェックするものです。以前はなかったと思うので、いつ、どういった意図で入ったのかを調べました。
    • これはLUCENE-2389 Enforce TokenStream impl / Analyzer finalness by an assertionによるものでした。Decorator patternで使えないオブジェクトを実体化できないようにするためのようです。ちなみに、Lucene in Action, 2nd editionは3.0対象なのでここら辺には触れられていません。また、この変更によってそのまま使える(abstractではない)Analyzerを継承して拡張することが出来なくなりました。
  • Analyzerがtry-with-resourcesで扱える
あとは、前と変わっていないことを確認したぐらいでした。

追記
CharReaderの使い方も調べましたが、追い切れませんでした。@shinobu_aokiさんに話を聞いたところ、基本的に自分でAnalyzer作って入れないとダメとのことでした。Solrは設定ファイルで設定できるのでそういう仕組みが入っているようです。Solrの方もみないと…。

0 件のコメント:

コメントを投稿