Apache Solr入門 オープンソース全文検索エンジン 改訂新版


[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus)


技術評論社


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

Chapter 1 イントロダクション
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.7 Solrのアーキテクチャ
1.8 Solrホームディレクトリ
1.8.1 ディレクトリ構成
1.9 Solritasの使い方

Chapter 2 スキーマの設定
2.1 スキーマ定義ファイル
2.1.1 schema.xmlの構成要素
2.1.2 schema.xmlファイルの配置場所
2.1.3 schema.xmlのバージョン
Column ~バージョン1.5 のSchema 差異について~
2.2 フィールド型
2.2.1 非テキスト系フィールド型
2.2.2 テキスト系フィールド型
Column ~ autoGeneratePhraseQueries属性~
2.2.3 文字フィルタ
2.2.4 代表的なトークナイザ
Column ~新NGramTokenizerFactory ~
2.2.5 代表的なトークンフィルタ
Column ~文字フィルタとトークンフィルタ~
2.3 フィールドの定義
2.3.1 フィールドの定義
2.3.2 ダイナミックフィールドの定義
2.3.3 ユニークキーフィールドの定義
Column ~デフォルト検索フィールドと,デフォルトオペレータの定義について~
2.3.4 コピーフィールドの定義
Column ~特殊なフィールドと設定~
2.4 Similarityの定義
2.5 書籍サンプルでの定義例
2.5.1 書籍データフィールドの説明
2.5.2 フィールド型text_ja
2.5.3 フィールド型text_cjk
2.6 analysis.jspを使う
2.6.1 text_ja
2.6.2 text_cjk

Chapter 3 インデックスの作成
3.1 ドキュメントの追加
3.1.1 XMLファイルによる登録
3.1.2 JSONファイルによる登録
3.1.3 CSVファイルによる登録
3.1.4 stream.file/stream.urlパラメータによる登録
3.1.5 インデックスディレクトリ
3.2 ドキュメントの更新
3.2.1 Num DocsとMax Doc
3.2.2 のoverwrite属性
3.2.3 アトミックアップデート
3.2.4 バージョンについて
3.3 ドキュメントの削除
3.4 コミット/最適化/ロールバック
3.4.1 コミット
3.4.2 最適化
3.4.3 自動コミット
3.4.4 commitWithin
3.4.5 ロールバック
3.4.6 管理画面のStats
3.5 バッチ処理
3.6 インデックス作成に関連する solrconfig.xml の設定
3.7 インデックスの内容を見る
3.7.1 スキーマブラウザ

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

Chapter 5 クライアントプログラミング
5.1 Java
5.1.1 SolrJの構成
5.1.2 インデクシングプログラム
5.1.3 SolrJによる検索プログラム
5.2 PHP
5.2.1 solr-php-clientのインストール
5.2.2 solr-php-clientによる検索プログラム
5.3 Ruby
5.3.1 RSolrのインストール
5.3.2 RSolrによる検索プログラム
5.4 Python
5.4.1 Pysolrのインストール
5.4.2 Pysolrによる検索プログラム
5.5 Perl
5.5.1 WebService-Solrのインストール
5.5.2 WebService-Solrによる検索プログラム

Chapter 6 データのクローリング
6.1 クローリングの全体像
6.1.1 クロールとは
6.1.2 インデクシングの前処理
6.1.3 データインポートハンドラ(DIH)によるインデクシング
6.1.4 ManifoldCFによるインデクシング
6.1.5 DIHとManifoldCFの機能比較
6.2 インデクシングの前処理─UpdateRequestProcessor
6.2.1 言語判別処理─LangDetectLanguageIdentifierUpdateProcessorFactory
6.2.2 スクリプト処理─StatelessScriptUpdateProcessorFactory
6.2.3 その他のUpdateRequestProcessor
6.3 データインポートハンドラ(DIH)
6.3.1 データインポートハンドラの設定方法
6.3.2 RDBからのインポート
6.3.3 XMLからのインポート
6.4 ManifoldCF
6.4.1 ManifoldCFの概要とインストール
6.4.2 ManifoldCFを使う(ローカルファイルシステムのクロール)
6.4.3 ManifoldCFとの連携
6.4.4 ManifoldCFを使う(Windowsサーバのクロール)

Chapter 7 より高度な検索
7.1 サーチコンポーネントとサーチハンドラ
7.1.1 検索語のサジェスチョン ─TermsComponent
7.1.2 「もしかして……」の実現 ─SpellCheckComponent
7.1.3 Suggester
7.1.4 お勧め商品の提示 ─MoreLikeThisComponent
7.1.5 相場の表示 ─StatsComponent
7.1.6 意図的なランクアップ─QueryElevationComponent
7.1.7 ドキュメントの単語情報の表示 ─TermVectorComponent
7.1.8 検索結果のクラスタリング ─ClusteringComponent
7.2 グルーピング検索 ─Result Grouping/Field Collapsing
7.2.1 グルーピング検索の利用
7.2.2 グルーピング検索のサンプル
7.3 空間検索 ─Spatial Search
7.3.1 Spatialとは
7.3.2 事前準備
Column ~緯度・経度の指定方法~
7.3.3 空間検索の利用
Column ~算出された距離の利用~
7.4 Join検索
7.4.1 Join検索の利用
7.4.2 Join検索のサンプル

Chapter 8 クラスタ構築と運用
8.1 分散インデックス/分散検索
8.1.1 分散インデックス/分散検索とは
8.1.2 分散インデックス/分散検索環境のセットアップ
8.1.3 分散インデクシングの実行
8.1.4 分散検索の実行
8.1.5 分散インデックス/分散検索の運用上の注意
8.2 レプリケーション
8.2.1 Solrのレプリケーション
8.2.2 マスタ/スレーブの設定
8.2.3 マスタ/スレーブのセットアップ
8.2.4 レプリケーションの実行
8.2.5 リピーター
8.3 分散インデックス,分散検索,レプリケーションを利用したクラスタ
8.4 SolrCloud
8.4.1 SolrCloudパラメータ
8.4.2 SolrCloud環境のセットアップ
8.4.3 SolrCloudの起動
8.4.4 設定の中央集中管理
8.4.5 耐久性のある書き込み
8.4.6 自動フェールオーバー
8.4.7 リーダー選出
8.4.8 コマンドラインインターフェース
8.4.9 用語集

Chapter 9 開発および運用のTIPS
9.1 設計
9.1.1 サイジング
9.1.2 シノニム
9.1.3 ユーザ辞書
9.1.4 ポイントとなるSolrの動き
9.2 モニタリング
9.2.1 管理画面からの確認
9.2.2 REST APIからの確認
9.2.3 JMXからの確認
9.3 チューニング
9.3.1 パフォーマンスチューニング
9.3.2 精度チューニング
9.4 Solr 1.4系からのバージョンアップ
9.4.1 バージョンアップ時の注意点
9.5 運用

付録
Appendix 1 スキーマ操作
A.1.1 フィールド情報の取得
A.1.2 フィールドの追加

Appendix 2 マルチコア操作
A.2.1 操作方法
A.2.2 STATUS
A.2.3 CREATE
A.2.4 RELOAD
A.2.5 RENAME
A.2.6 SWAP
A.2.7 UNLOAD
A.2.8 MERGEINDEXES
A.2.9 SPLIT

Appendix 3 コレクション操作
A.3.1 操作方法
A.3.2 CREATE
A.3.3 DELETE
A.3.4 RELOAD
A.3.5 SPLITSHARD
A.3.6 CREATEALIAS
A.3.7 DELETEALIAS
A.3.8 CoreAdmin APIを使ったコアの作成

索引

書籍目次

Posted by shi-n