InfoQ

InfoQ

News

マイブックマーク

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

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

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

Apache Solr ~ Luceneベースの高スケーラブルなエンタープライズ検索サーバー

作者 James Kao , 翻訳者 松本 清一 投稿日 2007年9月6日

セクション
デベロップメント,
エンタープライズ・アーキテクチャ,
設計/アーキテクチャ
トピック
Webサービス ,
検索 ,
Ruby ,
SOA ,
Java
Apache Solrは、Luceneベースのエンタープライズ検索サーバーであり、移行可能なwarファイルに、革新的なインデックス機能やクエリー機能を備えている。ユーザーとSolrとのインタラクションは、HTTPインターフェースを通して、XMLドキュメントやHTTPのGETパラメータを利用したクエリーを作成し、インデックス化した内容を送る。さらに、Solrは、巨大スケール環境へのクエリーのロードを可能にした、マスター/スレーブのインデックスレプリケーションメカニズムを提供する。

Solrは、初めCNET Networksで開発されていたが、2006年に、Apacheソフトウェアファウンデーションに寄贈された。現在は、検索アプリケーションとして、様々な高トラフックな外向けWebサイトで利用されている。コミュニティの報告も活発で、数百万ドキュメントのインデックスでも、問題なく動作しているというユーザ報告もある。

Solrの機能セットは、いくつかのサブシステムに分類される。

スキーマ
  • フィールドの型とドキュメントフィールドの定義
  • 動的フィールドにより、新しいフィールドをまとめて追加することが可能
  • 明示的な型により、フィールドの型を推測する必要がない
  • ストップワード(※1)、同義語リスト、プロテクトワードのリストの設定が外部ファイルベースで可能
  • 多くの追加テキストに対し、単語の分割、正規表現、あいまい検索を含んだ分析が可能
クエリー
  • 設定可能なレスポンスフォーマット(XML/XSLT, JSON, Python, Ruby)があるHTTPのインターフェース
  • 複数フィールドによるソート
  • コンテキストの一部をハイライト
  • 継続的なスコアリングレンジとプレフィックスクエリー - no idf、coord、lengthNormなどの要素や、クエリーがマッチする条件の数に制限が無い
  • Function Query - フィールドの数値や順序による関数によって得られたスコアに影響する
  • Date Math - クエリーや更新で、"当日"と比べた日付の指定が可能
コア
  • 入れ替え可能なクエリーハンドラ、拡張性の高いXMLデータフォーマット
  • ユニークキーのフィールドをベースとしたドキュメントの一意化
  • 更新や削除をハイパフォーマンスで一括処理
  • インデックスの変更をトリガーとした、ユーザが編集可能なコマンド群
  • ソートやクエリーの整列の両方に対する数値での設定
キャッシュ
  • キャッシュ実装部分が入れ替え可能
  • バックグラウンドで自動的にキャッシュが行われる(あるサーチャーが直前にアクセスしたキャッシュが、別の新たなサーチャーに利用されます。インデックスやサーチャーを変更することで高いキャッシュヒット率が可能になります)
  • 早くて小さいフィルター実装
  • ユーザーレベルキャッシュの自動化のサポート
レプリケーション
  • インデックス部分における効率的なディストリビューション
  • プル戦略により、サーチャーが簡単に追加できる
  • 設定を行うことで、高パフォーマンスとキャッシュ利用のトレードオフが可能
管理者用インターフェース
  • キャッシュの利用、更新、クエリーにおける包括的な統計情報
  • テキスト分析のデバッガ、分析の各段階における結果を表示
  • Web管理のクエリーインターフェース、デバッグ出力
バージョン1.2が先週にリリースされ、数多くの新機能が追加された。

今回のリリースは、SolrがIncubatorを卒業して初めてのリリースとなり、CSVなどの区切りのテキストデータのロード、タイムベースの自動コミット、より高速なフェッチ、ネガティブフィルター、スペルチェックハンドラ、正規表現テキストフィルタ、より柔軟なプラグインといった、より多くの新機能を提供しています。

近頃、2つのパートに分かれたシリーズものの記事が、developerWorksに掲載され、インストール手順、設定方法、使用方法、Solrのチューニングといったより詳細な内容が、一通り書かれている。

(原文は2007年6月11日にリリースされました)

特集コンテンツ一覧

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 のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。