トップ «前の日記(2012-01-29) 最新 次の日記(2012-02-04)» 編集

Public Diary


2012-02-03

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

とあるサイトの全文検索エンジンにNamazuを使ってきた。Namazuは、コンパクトでそこそこ速く、中小規模のサイトの検索には非常に良いけれども、以下のような問題点もある。

  • 内部的にEUC-JPを前提とした部分が多く、多言語環境に向いていない
  • 分かち書きに起因する検索能力の限界(検索漏れなど)がある
  • 最近開発は鈍っていて、当分の間、Unicode対応も望めない
  • 大規模(10万件オーダー~)の記事検索が苦手

大した問題ではないけれども、UTF-8 ベースのターミナル環境で、いちいちnkfを通さないと日本語の入出力ができないというのも、面倒くさい。

というわけで、Unicode ベースの検索エンジンを探してみた。条件は、(1) Namazu と同様の使い勝手 -- つまり、ローカルディレクトリをざっとスキャンしてインデックスに登録することができ、ウェブからCGI等で簡単にクエリを処理できる、(2) 入出力にUnicodeを使える、くらいですかね。とりあえず以下のようなものがある。

  • Apache Lucene / Solr / Nutch
    • Javaベース。
    • Luceneはコアとなる検索ライブラリ、Solr は Lucene を使ったJavaアプリケーション(ただし入出力はXMLベース)、Nutch はクローラ。
    • Javaベースなので、基本的にTomcat等のサーブレットコンテナが必要。
    • Nutch は主に外部サイトのクローリングを想定しており、ディレクトリツリーを辿っていくようなクローリングは苦手。(高級すぎるというか…)
  • msearch
    • Perlベース。
    • 小規模サイト向けの検索エンジン。本体はUnicode対応していないが、有志によるUnicode対応版が出ている。
    • それなりに高速という触れ込みだが、おそらく100万件の記事検索には向いていない。
    • CGIに直接パスワードを書き込むなど、手作り感が満載。
  • Hyper Estraier
    • 基本Cベースだが、Java/Rubyバインディング等もある。
    • オワコン。(2007年に開発終了)
    • 形態素解析とN-gramのハイブリッド機構で検索精度は高い。
  • Namazu
    • C+Perlベース。
    • 中規模サイト向けの検索エンジン。
    • 高速だし、それなりに性能は良い。
    • たいていのLinuxサーバーで(特別なパッケージのインストールなく)そのまま動く。
    • Unicode対応していない。入出力にはラッパーが必要だがラテン文字等が苦手。

msearch は初心者向けには非常に手を出しやすいんだろうけど、10年前に流行っていたKent Web系CGIと似たような雰囲気もするのでちょっとパス。Hyper Estraierはそれこそドキュメント少ないしブログ記事も少ない。で、Lucene 系は、一番良さそうな代替ソリューションだけれども、Javaベースというのが一番のネック。基本 Ruby + Perl ベースのCGIしかないサイトに、わざわざ全文検索だけのために Tomcat とかインストールするか? 「とあるサイト」は非力なVPS上で動作しており、重量級のTomcatなんて動かすとまともにサービスできるかどうか不安。

というわけで、Lucene系でNamazuの代替が可能かどうかをもう少し調べてみることにする。明日へ続きます


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|