トップ «前の日記(2012-02-03) 最新 次の日記(2012-02-06)» 編集

Public Diary


2012-02-04

[鯖管] Namazuの代替となる全文検索エンジン(2)

あらすじ

今までサイトの全文検索をNamazuで提供していたけど、最近のLinuxはターミナルがデフォルトでUnicode (UTF-8)だし、新しく作るサイトも大半がUnicodeで日本語以外のコンテンツも作る中、Namazuはいちいちnkfを通さないと使えないし基本的に日本語しか対応していないしでちょっと不便だなと思うようになってきた。そこで、Hyper Estraier、msearch、Apache Lucene といったようなものが見つかったけど、Hyper Estraier は2007年頃に開発が終了したオワコンだし、msearch は手作り感満載で拡張性に乏しそうなので、消去法で Apache Lucene を使ってみることに。

ただ、欲しかったのは Namazu の単純な代替だったけど、それに対して Apache Lucene はちょっとハードルが高い。基本的には Java のプログラミング能力も必要だし、Tomcat などのサーブレットコンテナの運用も必要そう。で、サブプロジェクトとして Solr やら Nutch やら色々あるし、で、結局 Namazu の代替となり得るか、ということを考察していく。

体系の理解

初心者向けのスライドやそれぞれのプロジェクトホームページをざっと流し読みして理解したのは以下のこと。

  • Apache Lucene … インデックス作成及び検索のためのライブラリ。入出力には Java のオブジェクトが用いられる(ファイルなどは適当に解析する必要がある)。データベースのAPIの一種と思えば良い。Namazu でいう Perl の Namazu クラスのようなもの。
  • Solr … Lucene はあくまでJavaライブラリなので、もうちょっと使いやすくするため、HTTPプロトコルで入出力可能な状態にするアプリケーションサーバ。これまた一般のサイト訪問者が直接使うようなものではなく、基本的にXMLでインデックスするためのデータを渡し、GETコマンドでクエリを渡す。Namazu でいう namazu コマンドラインの RESTful バージョンだと思えば良い。
  • Nutch … 指定されたURLやパスにアクセスするクローラのようなものと、実際の検索サービスを提供するウェブアプリケーションから構成される。文書変換などの機能もこのクローラで行うことができる。Namazu でいうと、クローラは mknmz (+xpdf等の変換アドオン)にネットアクセス機能を付けたようなもの、ウェブアプリケーションは namazu.cgi に相当。
インデックスの作成

image

検索の実行

image

で、数時間ほど試行錯誤してみたところの感想。

  • Nutchは、外部ウェブサーバーをクロールするのが主目的で、ローカルファイルはおまけ機能のため、ちょっと使い勝手が悪い。特に、ローカルのファイルは file: プロトコルでそのままサーブされるものと想定してクロールするため、たとえばファイル中の /etc/passwd とかいうキーワードに反応してその先のファイルをクロールしにかかったりするなど、若干自分のコントロールを超えるかなと思うようなこともあった。なので、一からプログラミングし直すくらいの勢いで設定ファイル(というよりは制御ファイル)を書かないと Namazu ばりの使い勝手にならない。
  • Solrは、自前のウェブサービスを立ち上げるので、ポートを空けたりするのが面倒。まぁiptablesとかで固めておけば大丈夫そうだけれども。

というわけで、感触を探っただけで一日過ぎたので、とりあえずここまで。明日に続きます

今日の参考文献


1980|03|
1986|04|
1998|04|
2002|01|11|
2003|03|04|05|07|08|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|02|03|04|06|07|08|11|12|
2008|01|02|03|04|06|07|08|09|10|
2009|01|12|
2011|05|10|11|
2012|01|02|10|