2017.12.15 Friday
スポンサーサイト
一定期間更新がないため広告を表示しています
| スポンサードリンク | - | | - | - |
関口宏司のLuceneブログOSS検索ライブラリのLuceneおよびそのサブプロジェクト(Solr/Tika/Mahoutなど)について
2007.07.17 Tuesday
deprecatedとなったQueryFilter
ここ数回にわたってLucene 2.2の新機能を紹介してきたが(まだ紹介していない機能は別の回にまわす)、今回はLucene 2.2でdeprecatedとなった機能であるQueryFilterについて説明しよう。
QueryFilterはインデックスのドキュメントを「篩(ふるい)」にかけるFilterの一種で、同じFilterの一種であるCachingWrapperFilterのように、以前作成したBitSetオブジェクトを保存するキャッシュを内蔵するFilterである。Filter(抽象クラス)、QueryFilterおよびCachingWrapperFilterの関係はLucene 2.1までは図Aのようであった。 Lucene本のP207-211にはそれぞれのFilterについて説明があるが、本を書いた当時は同じキャッシュのコードがQueryFilterとCachingWrapperFilterにあったため、美しくないなと感じた記憶がある。 Lucene 2.2でこの部分にリファクタリングが入り、QueryFilterはCachingWrapperFilterのサブクラスとなってQueryFilterそれ自身からはキャッシュのコードが取り除かれた。さらにQueryFilterはdeprecatedにマークされ、QueryWrapperFilterというFilterが新規に追加されて、Filterクラスは全体として図Bのようになった。 これにより、Lucene 2.2からは次のようなプログラムをコンパイルするとdeprecatedの警告メッセージが表示されるようになった:
メッセージは警告なので無視してもかまわない。以前のプログラムは同じキャッシュの性能効率で動作することが保証されている。 警告メッセージが出ないよう以前のプログラムを直す場合は、QueryFilterを使っている部分をQueryWrapperFilterとCachingWrapperFilterを組み合わせた形で次のようにプログラミングすればよい:
こうすれば、警告メッセージも出ず、プログラムも以前と同じ性能で動作する。 ところでFilterクラス群がこのように落ち着く前に、図Cのように単純にQueryFilterからキャッシュ機能を取り除く案が提案されていた: http://issues.apache.org/jira/browse/LUCENE-857 この案では、キャッシュのコードの冗長部分をただ単にQueryFilterから取り除いただけである。したがって、Lucene 2.1以前のQueryFilterを使ったプログラムがLucene 2.2でもキャッシュが効くようにするには次のようにプログラミングしなければならない:
しかしこの案ではLucene 2.1以前のQueryFilterを使ったプログラムは警告メッセージも出ずにコンパイルできてしまい、気づかずにLucene 2.2にアップグレードしてしまった場合はキャッシュが効かなくなるので性能が格段に落ちてしまう。 そこで最終的に落ち着いた案は図Bのような形である。これにより、以前のプログラムをコンパイルするとdeprecatedの警告が表示され、新しい使い方にスムーズに移行を促すことができ、警告をとりあえず無視して運用しても性能を落とすことがなくなる。 コミッターのちょっとした気遣いが光ったissueといるといえるだろう。 コメント
コメントする
この記事のトラックバックURL
トラックバック機能は終了しました。
トラックバック
|
+ Solrによるブログ内検索
+ PROFILE
+ LINKS
+ Lucene&Solrデモ
+ ThinkIT記事
+ RECOMMEND
+ RECOMMEND
Lucene in Action (JUGEMレビュー »)
Erik Hatcher,Otis Gospodnetic,Mike McCandless FastVectorHighlighterについて解説記事を寄稿しました。
+ RECOMMEND
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ MOBILE
+ SPONSORED LINKS
|
(C) 2024 ブログ JUGEM Some Rights Reserved.
|
PAGE TOP |