InfoQ

News

Lucene 2.3: インデックス作成パフォーマンスの大幅な向上と新たな機械学習プロジェクト

作者 Ryan Slobojan, 翻訳者 岡田 英久 投稿日 2008年2月13日 午後12時8分

コミュニティ
Java
トピック
オープンソース,
検索
タグ
Hadoop,
Lucene

Java で記述された高性能でフル機能の全文検索エンジンを開発する Apache Lucene(source)プロジェクトは 1 月 24 日、バージョン 2.3 (source)をリリースした。InfoQ はプロジェクトのコミッタで PMC メンバー(source)でもある Grant Ingersoll 氏(source)と話をし、今回のリリースと Lucene の今後についてより多くの情報を得た。

Ingersoll 氏によると、今回のリリースにおける最大の変更点はインデックス作成アルゴリズムである。そのアルゴリズムでは新しいインメモリモデルを使って大幅な高速化を実現している。また、いくつかのテストを行ったところ、既存の Lucene 2.2 の JAR ファイルを単純に 2.3 のものに置き換えるだけで、インデックス作成のパフォーマンスが 500% 向上するという結果を得たそうだ。その他には次のような変更点が挙げられる。

  • インデックス管理の改善- インデックス作成中に内部ファイルのマージが原因で時々発生していた長い中断時間がなくなり、インデックス作成プロセスを管理するための別のアプローチを実装しやすくなっている。
  • オブジェクトプーリング-  インデックス作成のための解析時に Document、 Field、 Token のインスタンスを再利用できるようになった。これにより解析が高速化され、インデックス作成時のメモリ割当が減少する。
  •  IndexReader の reopen メソッド - 新しく導入された reopen メソッドはインデックス全体をリロードせずに更新のあった部分だけをロードするので、これを使ってインデックスの更新をキャプチャすれば、より高速である。
  • さらに簡単になった IndexWriter のチューニング - setMaxBufferedDocs メソッドが、より直感的な setRAMBufferSizeMB メソッドで置き換えられた。

さらに、バージョン 2.3 は 2.2 から再コンパイルせずに簡単に置き換えることができるよう意図されている。完全なチェンジログ(source)も閲覧可能だ。

また、Ingersoll 氏は Lucene の今後の計画についても説明し、次のリリースは 2.9 になるだろうと語った。2.9  リリースは Lucene 3.0 に備えて API の一部を非推奨にしたりクリーンアップしたりする比較的小規模なバージョンアップだ。バージョン 3.0 は、サポートされる Java のバージョンとして最低でも JDK 5 が必要になるという変更を伴うメジャーリリースとなる。その他の主要な機能はまだ決まっていない。

Ingersoll 氏は、Lucene と Solr (source)が強く統合され、そして Nutch(source)、Tika(source)、Hadoop (source)とも相当な連携がなされたと指摘して Lucene コミュニティ全体についても論じ、彼自身が立ち上げプロセスに携わっている Mahout (source)という名前の新しいプロジェクトについても説明した。

Mahout は別個のプロジェクトになるだろうが、Lucene ユーザにとって有益なものとなる可能性がある。現在、Lucene 用の JIRA には機械学習アルゴリズムを実装するいくつかのパッチが上がっている。このプロジェクトの目的は、商用レベルの品質をもつ大規模な機械学習アルゴリズムを Hadoop をベースに構築し、Apache ライセンスのもとで提供することだ。すでに多くの関心を集めているし、来月にはこのプロジェクトを進めたいと考えている。

Mahout を作り出すことで Google やそれに類する企業の隠された技術をさらに明らかにし、それらの機能を人々に提供して新たなイノベーションに拍車をかけたい。プロジェクトプラン(source)と Incubator proposal (source)が公開されているので、この新しいプロジェクトに興味をもった人は見てほしい。Ingersoll 氏はそのように語っている(source)

原文はこちらです:http://www.infoq.com/news/2008/01/lucene-23-mahout

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

特集コンテンツ一覧

トップスポーツチームの監督に教わる秘訣

この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。

事例研究:Dutch Railwaysのプロジェクトにおける分散拠点でのスクラム・プロジェクト

この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。

Agile2008チーム参加レポート - 帰国そして変化

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。

SilverlightとJavaのインターオペラビリティ

マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。

Agile2008 チーム参加レポート - カンファレンス参加編

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。