なぜ検索システムが必要なのか?
コンピュータを活用する、その意義がもっともわかるのが「検索」ではないでしょうか。検索といえばGoogleの検索を皆さんすぐに思い浮かべるでしょう。あのシステムを実現するには最新かつ最高峰のコンピュータ環境が必要になるであろうことは皆さん理解していると思います。クローラーと呼ばれる情報収集プログラムがWebサーバ上に公開されているデータを余すことなくコピーし、Googleのデータセンターに集めます。その莫大な情報をもとに検索データを整形し、ユーザからの検索ワードに適した回答を表示します。しかし、企業としてGoogleにデータのコピー(提供)を良しとしないこともかなりあります。自分で蓄積したデータは自分の会社で活用してこそ、ビジネスチャンスが生まれます。Googleに頼らない検索システムの構築――Apache Solrの出番です。
Apache LuceneからSolrへ
図1 『 Apache Lucene入門』( 絶版)
今回改訂3版を出版することになりましたが、その前にApache Lucene(アパッチルシーン、以下Lucene)について説明します。LuceneはJava言語で書かれたオープンソース全文検索エンジンライブラリです。これを使うためには、Java言語でプログラミングする必要があります。Luceneはデータの分散処理を実行するApache Hadoopのもとになったプログラムでもあります。莫大なデータを処理するという機能がその根本にあるようです。当社でも10年以上前に『Apache Lucene入門』( 関口宏司 著)を出版しました(図1 ) 。これは絶版ですが、発売時よりも高い値段で取引されていたこともありました。知る人ぞ知る本です。
さて、Apache Solr(以下Solr)はLuceneに、JavaだけでなくJavaScript、PHP、Python、Rubyなどのスクリプト言語を使ってアプリケーション開発できるようにしたものです(図2、図3 ) 。これでより多くのプログラマが検索システムを作れるようになりました。これがSolrの人気を支える条件の1つとなっています。
Solrのバージョンアップは今回で6.0になり、積極的にバージョンアップが図られ洗練されています。本書『改訂第3版 Apache Solr入門 』は現時点では最新バージョンで解説をしております。
図2 『 Apache Solr入門』 Restfulな開発ができるようになったSolr
図3 『 改訂新版Apache Solr入門』 Solrのバージョンアップに対応
検索システムとは何か
検索を説明するまえに、日本語の構造が検索プログラムの問題になります。英語の場合は、「 I have a pen.」のようにそれぞれの語が離れています。これを分かち書きと言います。コンピュータとしてはこの方が分析しやすいのです。もちろん句読点で分かれていますが、日本語はすべての語がつながった状態で表現されます。これをデータとしてコンピュータに判断させるのが非常に難しいのです。このためにSolrでは「転置インデックス」や「単語分割(トークナイズ) 」に「フィルタリング」を加えた工夫(アナライズ)を備えています。こうした構文解析のしくみを学ぶのにも、Solrは貴重な素材と言えます。またそうした検索データを正しく扱うためのデータベースの構造「スキーマ」のしくみと作り方も紹介しています。さらに本書の山場の1つはレコメンド機能の解説です。これもウェブ検索でよくあるものですが、実際のしくみを学ぶことができます。本書を通じて検索という技術は非常に奥深く、さまざまな技術要素の組み合わせであることがわかります。これらを学ぶことで技術者として視野が広がるのではないでしょうか。
筆者の変遷が一つのドラマのよう
図4 『 改訂第3版Apache Solr入門』 Solr最新版対応および 関連技術情報の刷新
『Apache Lucene入門』は、関口宏司さんが単著で執筆したものですが、『 Apache Solr入門』では、大谷純、三部靖夫、武田光平、中野猛の皆さんによる共著、そして[改訂新版]では、大谷純、阿部慎一朗、大須賀稔、北野太郎、鈴木教嗣、平賀一昭の皆さん、今回の[改訂第3版]では若い世代に代わり、打田智子、大須賀稔、大杉直也、西潟一生、西本順平、平賀一昭の皆さんが書きました。検索システムを通じて、さまざまな企業のいろいろな技術者の手を経て、本書は執筆されました。筆者達はいずれも誰もが知る有名Webサービス企業の出身です。彼らのエンジニア魂が詰まった本とも言えます。単に検索システムのしくみを知るだけでなく、すべてのコードを試すことができますので、ぜひ追体験してこの検索技術を習得してください。