読者です 読者をやめる 読者になる 読者になる

サーチアプリケーション

Computer

Solrは、3.Xの頃に調査したことがあったのですが、4.Xになってからは触れることがほとんどなく、なんか良くなったらしいということだけ聞こえてきていました。また、最近の世の中の事情もあって、構造化データと非構造化データを効率的に扱うことを考えるとサーチアプリケーションという選択肢もアリになっていると思います。専用のDWHを用意するという発想ももちろんアリだと思います。ただ、データの格納が必要なく、すでに稼働しているさまざまなデータを取出し、サーチアプリケーションのインデックスとしてだけ保持しておいて利用するというのもコストがあまりかからないので良いと思います。弱点としては、サーチアプリケーションごとに、機能の違いがあることと、元のデータソースとの同期を適切に行わないといけないというところでしょう。

全文検索というとテキストだけを対象としているように考えてしまいがちですが、ビッグデータブームもあり、Solrコミュニティは、構造化データと非構造化データを結合したアナリティクスを提供するという方向を意識しているように思います。例えば、IBMの方の以下の記事がわかりやすいと思います。

http://www.ibm.com/developerworks/jp/java/library/j-solr-lucene/

検索とアナリティクスの融合は、Splunkが先行していますが、Elasticsearchは、Kibanaなどを利用して、同様のことをより低価格で目指しているように見えます。

http://www.elasticsearch.org/overview/kibana/

このような状況でもあり、真面目に調査しようと思い、改訂版のSolr本とElasticsearch本を購入しました。

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

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

高速スケーラブル検索エンジン ElasticSearch Server

高速スケーラブル検索エンジン ElasticSearch Server

私は、関係者でもないですが、ステマしておきます。改訂版のSolr本は、前作のSolr本を踏襲しつつ、新しい内容が加筆されているので、前作を読んだことがある人は読みやすいと思います。Elasticsearch本は、まだ眺めただけですが、アプリケーションを利用する人にとっては、十分な情報が書かれているように思います。

サーチアプリケーションというのは、情報系の勉強をするのにもってこいだと思います。検索のUIは多くの人が慣れ親しんでいるのでとっつきやすいですし、結果も見慣れたものなので、苦痛ではないでしょう。Solrのサンプルを動かすだけだと簡単にできるでしょうし、楽しいと思います。さらにそこから深堀りできます。例えば、

  • 高速な検索をどう実現しているのだろうか?という疑問を持ち、高速な検索アルゴリズムを調べる。
  • より良い検索結果とは何だろうか?という疑問を持ち、情報検索の世界を調べる。
  • 世界には多くの言語があるが、それを柔軟に扱うにはどうしたら良いだろうか?という疑問を持ち、自然言語処理の世界を調べる。
  • 関連するものをいろいろ出してくれるレコメンドというのはどう実現されているのだろうか?という疑問を持ち、機械学習の世界を調べる。
  • 多くのユーザに安定的にサーチというサービスを提供するために、システムはどう構成されて、動いているのだろうか?という疑問を持ち、インフラ技術を調べる。

など、さまざまなことをサーチアプリケーションを入り口にして学ぶことができます。私も勉強中です。特に、分散検索などは、昔は試すのが難しかった(作るのが大変だった)ですが、Solrの登場でだいぶ敷居が下がりました。学生実験などでも十分にできると思います。私は、社会人になって、サーチアプリケーションから、検索アルゴリズムの世界に興味を持ち、簡潔データ構造を調べるようになり、いろいろ作ってみたりしました。Suffix ArrayやFM-Indexという技術ももちろんおもしろいですが、アプリケーションとしてのサーチもやはりおもしろいです。また、Luceneのコアは、転置索引やN-gramですが、なぜ、逐次探索(grep系)やSuffix Array系ではないのか?、Suffix Array系にしようと思うとどういった課題を解決しないといけないのか?というのを考えるのもおもしろいです。

私も、まだ、SolrやElasticsearchをあまり触っていないので、これから知識を深めていこうと思います。