InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

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

作者 Ryan Slobojan , 翻訳者 岡田 英久 投稿日 2008年2月13日

セクション
運用/インフラ,
デベロップメント,
設計/アーキテクチャ
トピック
オープンソース ,
検索 ,
Java
タグ
Lucene ,
Hadoop

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

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。