Apache Solrで検索エンジンについて学んでみる
検索エンジンを構築したところが抜けてます。すみません
1. Apache Solrとは
Apache Solrとは、Apache Luceneをベースとして開発された、人気で、非常に高速で、オープンソースの検索エンジンです。
1.1 特徴
- Apache Luceneをベースとして開発された検索エンジンサーバーであるがRESTfulなインターフェースで構築できる
- ハイライトなど膨大な検索結果からユーザが探しだせる仕組みを提供している
- 各種のキャッシュを備えている
- インデックスのレプリケーション機構があり、耐障害性を備える
- 分散検索の機構があり、高速な検索をできる
- ニアリアルタイムである
2. 検索エンジンはどのような仕組みなのか
2.1 順次検索と転置インデックス
ユーザーが指定したキーワード(検索語)がどのドキュメントに含まれているかを探し出す方法には、二つの方法があります。
順次検索方式とは、キーワード文字列を検索対象ドキュメントの先頭から後方に向かって検索する方法です。
grep
コマンドも同様です。
転置インデックス方式とは、転置インデックスという索引を作っておいて、それをもって検索をする方法です。 この方式はApache Solrで採用されています。
まず、転置インデックスを作るには、トークンと単語にトークナイズしないといけせん。
そのときに、言語に非常に依存するので、日本語の形態素解析器が使用されます。
また、「走った」や「走らない」は日本語的な活用が違うだけで、「走る」というキーワードにヒットするべきです。
このような「走らず」などを不要な転置インデックスをフィルタリングします。
また、この一連の流れをSolrではアナライズと呼びます。
2.2 検索結果のランキング
ユーザーが求めるドキュメントが一番先にこなくてはなりません。
そのような時にランキングする必要があります。
具体的な処理は、検索結果のドキュメントに出現する全単語の重み付けします。
重み付けは
- ドキュメント内での使用頻度
- 全ドキュメントで単語が出でくるドキュメントの数
でつけられ、いわゆる単語がどのくらいドキュメントにおいて重要かを表します。
2.2 検索キーワードにおけるドキュメントのスコア計算
単語の重みをベースに、どのくらいキーワードとマッチしているかを計算することをスコア計算と呼び、マッチ具合をキーワードとドキュメントの類似度と呼ぶ。
3. Macで構築してみる
3.1 Homebrewでインストール
まずHomebrewを使ってApache Solrをインストールします。
brew install solr
するとインストールされSORL_HOME
は/usr/local/Cellar/solr/VERSION/libexec
となります。
3.2 Solrを起動する
macOSの場合は以下のコマンドで起動することができます。
$ solr start -e cloud
このコマンドをすると対話シェルが始まり、サーバーの数やポート番号を選択することになります。
$ solr start -e cloud Welcome to the SolrCloud example! This interactive session will help you launch a SolrCloud cluster on your local workstation. To begin, how many Solr nodes would you like to run in your local cluster? (specify 1-4 nodes) [2]:
Enter
で押して、すべてデフォルトで設定しました。
最終的には
... SolrCloud example running, please visit: http://localhost:8983/solr ...
と出て、完了です。URLにアクセスすると
のようにコンソールのようなものを見ることができます。
クリーンアップ
以下のコマンドで停止します。
solr stop -all
参考文献
[改訂第3版]Apache Solr入門――オープンソース全文検索エンジン (Software Design plus)
- 作者: 打田智子,大須賀稔,大杉直也,西潟一生,西本順平,平賀一昭,株式会社ロンウイット,株式会社リクルートテクノロジーズ
- 出版社/メーカー: 技術評論社
- 発売日: 2017/04/27
- メディア: 大型本
- この商品を含むブログを見る