2006年9月20日

[Namazu-devel-ja 1225] Re: 検索精度の問題

寺西です。

NOKUBI Takatsugu wrote:
>
> 私は現在とある産学連携プロジェクトにかかわっているのですが、そこで
> 1000万オーダーの文章をNamazuで検索させる、ということを行っています。そ
> の中で得られた知見をこの機会に情報提供させてください。

なかなか興味深いお話です。
私の環境では1000万オーダーの文章を取り扱う機会がないもので、そういった
情報はいろいろと教えてもらいたいです。

> namazu.cgi(libnmz)の検索では長い文字列があたえられた時、インデックス
> 内に登録されている単語リストから、最長一致で単語を分割し、それらの検索
> 結果の和を求めます。

本件とは特に関係ないですが、厳密にはそうはなっていないはずです。
(そうなっていない部分は、修正する必要はあるかなとは思っているので
すが...。)

> たとえば「汚染」「問題」が検索の閾値を越えてヒットしたとしましょう。
> すると、namazu.cgiはエラーを発生させずに閾値を越えた検索語はなかったも
> のとして扱います。その結果、「環境」のみでヒットした結果を返します。当
> 然、相当数のノイズが含まれることになります。

これはそうです。
しかし、MaxHit を増やすことで解決する話ではないのでしょうか?

> 対策としては、インデックスをファイル数である程度分割して検索させる手
> 段があります。ただし、1000万というオーダーを分割しすぎると結構な速度低
> 下を招きます。これは、個々のインデックスで検索した結果をあとでマージす
> るためです。

多少のオーバーヘッドはあると思いますが、マージの際に結構な速度低下が
あるということですが、具体的にどの辺りで速度低下するか確認されました
でしょうか?

マージ部分は、nmz_merge_hlist だろうと思いますが、ここは一重ループ
の処理で、コピーは O(n) です。この部分が結構な速度低下を起こすとは
思えません。
別の要因があるのではないでしょうか。(例えば今回の修正箇所とか)

あるいは、分割前では Hit 数の上限を超えているので無視しているから、
Hit する候補の文書数自体がかなり少なくなっているので、速度の差が
でているということでしょうか?
それならば、マージの問題ではなくて、Hit 数が多い場合に速度が落ちる
ということではないかと思います。

# MaxHit ってインデックス単位でのチェックなんですよね...

> Namazu側の仕様についても多少考え直したほうがいいかもしれないとも思っ
> ていますが、一方でNamazuは最初から「中小規模」への対応をうたっているの
> で、これでいい気もしています。

「中小規模」だって言っているのに、かなり大規模で使おうとする方は
沢山いらっしゃいますね。
ただ、そろそろ中規模ってのも時代の流れで、Namazu が想定する中規模
より大きくなってきているような気もしますので、より規模の大きなもの
への対応は必要ではないかと思います。
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E

_______________________________________________
Namazu-devel-ja mailing list
Namazu-devel-ja@xxxxx
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-devel-ja

投稿者 xml-rpc : 2006年9月20日 11:32
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/46211
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。