Apache Solr入門
――オープンソース全文検索エンジン

[表紙]Apache Solr入門――オープンソース全文検索エンジン

紙版発売

B5変形判/320ページ

定価3,960円(本体3,600円+税10%)

ISBN 978-4-7741-4175-6

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

Apache Solrとは,オープンソースの検索エンジンです。Apache LuceneというJavaの全文検索システムをベースに豊富な拡張性をもたせ,多くの開発者が利用できるように作られました。検索というと,Googleのシステムを使っている企業Webページが多いですが,自前の検索エンジンがあると顧客にとって本当に必要な情報を提供できます。SolrはJavaだけでなく,PHP,Ruby,Python,Perl,Javascriptなどでもプログラミング可能です。本書は検索エンジンの基礎から応用までじっくり解説します。

こんな方におすすめ

  • Web開発者
  • プログラマ(PHP,Java,Ruby,Python,Perl,JavaScript,Velocity)

著者の一言

Solr はApache Luceneを使って構築されたオープンソースの検索エンジン・サーバです。Luceneはすでに世界中のシステムで使われている実績を持っていますが,Javaで書かれた検索エンジン・ライブラリであり,利用するにはJavaのプログラムをたくさん書かなければいけません。それに対してSolrは,LuceneをラップしてHTTP/XMLというRESTfulな今どきのインタフェースでアクセスできるようになっています。いうまでもありませんがインタフェースを簡単にしただけでなく,機能や性能を向上させるいろいろな仕掛けも付加されています。

本書は,情報検索に興味を持つ,あらゆる人を対象としています。学生から社会人,週末プログラマから職業プログラマ,SE,プログラミングをしない情報システムを使うだけの人,検索エンジンを比較検討しようとしている人……制限はありません。それぞれの立場でSolr(ソーラー)をお楽しみください。しかしながら本書はSolrの技術解説書でもあり,Solrをインストールしたりサンプルコードを設定したりする場面もあります。そのときは技術的なバックグラウンドのある方は若干有利でしょう。自分の経験に感謝しつつ,コマンドを入力したり,検索して結果を確認したり,より深くお楽しみください。

本書のサンプル

本書の一部ページを,PDFで確認することができます。

目次

  • はじめに
  • 謝辞
  • 対象読者
  • 本書の構成と読み方
  • サンプルコードのダウンロードと本書のサポート

chapter1イントロダクション

  • 1.1 Apache Solrとは何か?
    • 1.1.1 Solrの特徴
  • 1.2 全文検索と転置索引(インデックス)の基礎知識
  • 1.3 形態素解析とN-gram
  • 1.4 Solrのインストール
    • 1.4.1 Javaのインストール
    • 1.4.2 Solrのインストール(全プラットフォーム共通)
  • 1.5 Solrの付属サンプルを実行する<
    • 1.5.1 Solrの起動
    • 1.5.2 サンプルデータの登録
    • 1.5.3 サンプルデータの検索
  • 1.6 Solrを日本語で使えるようにする
    • 1.6.1 N-gram
    • 1.6.2 形態素解析
  • 1.7Solrのアーキテクチャ
  • 1.8Solrホームディレクトリ

chapter2スキーマの設定

  • 2.1 スキーマ定義ファイル
    • 2.1.1 schema.xmlの構成要素
    • [コラム] RDBとSolrの"スキーマ"に関するFAQ
    • 2.1.2 schema.xmlファイルの配置場所
    • 2.1.3 schema.xmlのバージョン
  • 2.2 フィールド型
    • 2.2.1 非テキスト系フィールド型
    • 2.2.2 テキスト系フィールド型
    • 2.2.3 代表的なトークナイザ
    • 2.2.4 代表的なトークンフィルタ
  • 2.3 フィールドの定義
    • 2.3.1 フィールドの定義
    • 2.3.2 ダイナミックフィールドの定義
    • 2.3.3 ユニークキーフィールドの定義
    • 2.3.4 デフォルト検索フィールドの定義
    • 2.3.5 デフォルトオペレータの定義
    • 2.3.6 コピーフィールドの定義
  • 2.4 Similarityの定義
  • 2.5 書籍サンプルでの定義例
    • 2.5.1 書籍データフィールドの説明
    • 2.5.2 フィールド型text_sen
    • 2.5.3 フィールド型text_cjk
  • 2.6 analysis.jspを使う
    • 2.6.1 text_sen
    • 2.6.2 text_cjk

Chapter3 インデックスの作成

  • 3.1 ドキュメントの追加
    • 3.1.1 XMLファイルによる登録
    • 3.1.2 CSVファイルによる登録
    • 3.1.3 stream.file/stream.urlパラメータによる登録
    • 3.1.4 インデックスディレクトリ
  • 3.2 ドキュメントの更新
    • 3.2.1 numDocsとmaxDoc
    • 3.2.2 <add/>のoverwrite属性
  • 3.3 ドキュメントの削除
  • 3.4 コミット/最適化/ロールバック
    • 3.4.1 コミット
    • 3.4.2 最適化
    • 3.4.3 自動コミット
    • 3.4.4 <add/>のcommitWithin属性
    • 3.4.5 ロールバック
    • 3.4.6 管理画面のstats情報
  • 3.5 インデックス作成に関連するsolrconfig.xmlの設定
  • 3.6 インデックスの中を見る
    • 3.6.1 スキーマブラウザ
    • 3.6.2 Luke

chapter4検索

  • 4.1 検索の基本動作
    • 4.1.1 検索のしくみ
    • 4.1.2 検索リクエストとパラメータ
    • 4.1.3 検索式
    • 4.1.4 リクエストハンドラ(サーチハンドラ)
    • 4.1.5 レスポンスライタ
  • 4.2 検索結果レスポンス
    • 4.2.1 ヘッダ情報(responseHeader)
    • 4.2.2 検索結果(result)
  • 4.3 結果のソート
    • 4.3.1 スコアによるソート
    • 4.3.2 特定フィールドでのソート
    • 4.3.3 ランダムソート
  • 4.4 ハイライト(要約と検索語の強調表示)
    • 4.4.1 ハイライトの基本
    • 4.4.2 ハイライトの結果(XML)
    • 4.4.3 その他ハイライト用のパラメータ
    • 4.4.4 ハイライターのしくみ
    • 4.4.5 ハイライターの設定
    • [コラム] ハイライト処理を速くするには
  • 4.5 ファセットの表示と絞り込み検索
    • 4.5.1 ファセットとは
    • 4.5.2 Solrのファセット機能
    • 4.5.3 絞り込み検索(フィルタクエリ:fq)
    • 4.5.4 ファセットのしくみ
  • 4.6 キャッシュ
    • 4.6.1 検索結果キャッシュ(queryResultCache)
    • 4.6.2 フィルタキャッシュ(filterCache)
    • 4.6.3 ドキュメントキャッシュ(documentCache)
    • 4.6.4 フィールド値キャッシュ(fieldValueCache)
    • 4.6.5 ユーザ定義キャッシュ
    • 4.6.6 キャッシュの設定
    • 4.6.7 キャッシュの初期生成および再生成
    • 4.6.8 キャッシュの統計情報

chapter5クライアントプログラミング

  • 5.1 Java
    • 5.1.1 SolrJの構成
    • 5.1.2 インデクシングプログラム
    • 5.1.3 SolrJによる検索プログラム
  • 5.2 PHP
    • 5.2.1 PHPによる検索プログラム
  • 5.3 Ruby
    • 5.3.1 solr-rubyのインストール
    • 5.3.2 インデクシングプログラム
    • 5.3.3 CSVファイルの一括登録
    • 5.3.4 Ruby on Railsによる検索プログラム
    • 5.3.5 Flareを使ってみる
  • 5.4 Python
    • 5.4.1 Djangoによる検索プログラム
  • 5.5 Perl
    • 5.5.1 WebService::Solr
    • 5.5.2 Mojo (Mojolicious)
    • 5.5.3 Data::Page::Navigation
    • 5.5.4 変換プログラムの作成
    • 5.5.5 動作確認
  • 5.6 JavaScript
    • 5.6.1  JavaScriptによる検索プログラム
  • 5.7 VTL(Velocity)
    • 5.7.1 VelocityResponseWriterを使うための準備作業
    • 5.7.2 Velocityテンプレートファイルの説明

chapter6データインポートハンドラ

  • 6.1 データインポートハンドラとは
  • 6.2 Data Import Handlerの設定方法
  • 6.3 RDBからのインポート
  • 6.4 XMLからのインポート

chapter7マルチコア

  • 7.1 マルチコアとは
  • 7.2 利用シーン
  • 7.3 準備する
  • 7.4 操作する
  • 7.5 実際の利用

chapter8分散検索

  • 8.1 分散検索のしくみ
  • 8.2 分散検索サーバのセットアップと検索の実行
    • 8.2.1 複数のSolrサーバのセットアップ
    • 8.2.2 分散検索サーバへの文書の登録
    • 8.2.3 分散検索クエリの送信
  • 8.3 分散検索の運用上の注意事項
    • 8.3.1 文書を複数のSolrサーバに振り分けて登録する方法
    • 8.3.2 ユニークキーに関する制限
    • 8.3.3 利用可能なSearchComponentの制限
    • 8.3.4 _サーブレットコンテナの同時に処理可能なリクエスト数上限に起因するデッドロックの発生
    • 8.3.5 URL文字数の上限に起因するシャード数の上限

chapter9サーチコンポーネント

  • 9.1 サーチコンポーネントとサーチハンドラ
  • 9.2 「もしかして……」の実現 ―SpellCheckComponent
    • 9.2.1 スペルチェック用辞書インデックスの準備
    • 9.2.2 solrconfig.xmlの設定
    • 9.2.3 schema.xmlの設定
    • 9.2.4 スペルチェックの実行
  • 9.3 お勧め商品の提示 ―MoreLikeThisComponent
  • 9.4 相場の表示 ―StatsComponent
  • 9.5 検索語のサジェスチョン ―TermsComponent
  • 9.6 意図的なランクアップ ―QueryElevationComponent
  • 9.7 ドキュメントの単語情報の表示 ―TermVectorComponent
    • 9.7.1 schema.xmlへの設定
    • 9.7.2 solrconfig.xmlへの設定
    • 9.7.3 TermVectorComponentの実行
  • 9.8 検索結果のクラスタリング ―ClusteringComponent
    • 9.8.1 Solrの起動とサンプルデータの登録
    • 9.8.2 Carrot2 Workbench

chapter10実践!Solr運用TIPS

  • 10.1 ポイントとなるSolrの動き
  • 10.2 シノニム
  • 10.3 schema.xmlのTIPS
  • 10.4 ログの見かた
  • 10.5 モニタリングと監視
  • 10.6 レプリケーション
  • 10.7 XSLTの利用
  • 10.8 その他

Appendix1TomcatでSolrを使う

Appendix2Cellとは

著者プロフィール

関口宏司(せきぐちこうじ)

(第1章,第2章,第3章,第5章のRuby/VTL,第9章,付録1を担当)

1964年埼玉県出身。DEC(現HP),BEAシステムズ(現オラクル)などの数社のITベンダーを転々とした後,Lucene/Solr技術を専門に扱う(株)ロンウイットを2006年に創業。顧客の不具合に対応するためコミュニティ活動をするうちErik Hatcher氏らの推薦を受けてSolrコミッターおよびLucene contribコミッターに就任。現在も現役のコミッターとして日々Lucene/Solrの不具合修正や新機能追加で多忙な日々を送る一方,ブログ/出版/講演などでLucene/Solrの最新情報を発信している。

さらに詳しく:http://lucene.jugem.jp/?pid=1

ブログ:http://lucene.jugem.jp/


大谷純(おおたにじゅん)

(第4章,第5章のJava/PHP/Python/JavaScriptを担当)

1975年広島県出身。広島市立大学情報科学研究科修了。(株)シーマークに勤務。Javaを主体に,C#,PHP,Perl,Cなど様々な言語による開発を経験。自社地域コミュニティーサービスの企画・開発・運用まで一貫して従事し,最近では性能診断や検索システム構築支援などを主に担当。好きな言葉は「臨機応変」


三部靖夫(さんべやすお)

(第6章を担当)

1961年大阪府出身。㈱NTTデータに勤務。同社にて,画像や映像などのマルチメディアデータや文書データのアーカイブや情報検索といった技術に関する研究・ソリューション開発からシステム導入といった業務に従事。工学博士。


武田光平(たけだこうへい)

(第8章を担当)

1977年広島県出身。(株)NTTデータに勤務。マルチメディア,ウェブアーカイブ,及び情報検索に関するシステム,ソリューションの開発に従事。業務で各種ソフトウェアの開発に関わるほか,プライベートでも,いくつかのオープンソースソフトウェアを開発,公開している。Lucene/Solrに関する作品には,Lucene/Solr用の日本語トークナイザパッケージである「cmecab-java」がある。

cmecab-java:http://code.google.com/p/cmecab-java/


中野猛(なかのたけし)

(第3章,第5章のPerl,第7章,第10章,付録2を担当)

1976年兵庫県出身。奈良先端大学院大学より(株)リクルートに入社。情報システム部門であるMITのシステム基盤推進室にて,インフラの構築からR25などのウェブサイト開発運用,Solrなどオープンソースの導入推進やキャッシュ技術を中心としたミドルウェア開発などに幅広く従事。趣味はダイビングであり一番印象に残っているポイントはメキシコのラパス。


株式会社ロンウイット(かぶしきがいしゃろんういっと)

Lucene/Solrを企業/団体に導入する支援事業を専門に行う。現在はリリース版Solrにバグフィックスと機能強化プラグインおよびサポートサービスをセットにした「Solrサブスクリプション・パッケージ」を販売している。また,Lucene/Solrの技術者向けトレーニングも提供する。

ホームページ:http://www.rondhuit.com/