- PR -

Googleのような検索

1
投稿者投稿内容
Dream
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2006-11-29 12:42
PostgresやDerbyのようなRDBを使用しています。

検索の際に、1つの検索窓からテーブルの複数のカラムをすべて検索したいと思っています。

具体的には、下記のようなカラムがあったとして、検索文字列を入力するとA〜Gすべての
カラムの中に該当するものが含まれていないかを検索したいと思っています。これを実現するためには、where句ですべてのカラムをスキャンできるようにSQLを書けばいいかとも思うのですが、ほかに何かいい方法はないでしょうか。この方法だと、データが増えた場合に検索時間が長くなりそうなので心配です。

テーブルのカラム例)
A | B | C | D | E | F | G

全文検索エンジンのライブラリを利用することも検討していますが、すでにデータがデータベースに入っているものもありますので、それらのデータに手を加えることなく、プログラムの側で制御できればと考えています。

やはり、where句の中に1つずつ条件を書いていくしかないのでしょうか。
アドバイスいただければ幸いです。
よろしくお願いいたします。



nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-11-29 14:02
Googleなどの検索エンジンは事前にインデックスを作って高速化してますので
代わりにデータの完全な整合性を持っていません。

DBの各項目を総なめにすれば確かに完全な整合性をもって検索ができますが、
当然のことながら遅いわけですね。

全文検索エンジンってのは相応のことをしてくれますから、
自力でアルゴリズムを考えるのが趣味だと言うのでもなければ
そちらに頼るほうがよいでしょう。
車輪の再発明は趣味や教育でやる分には構いませんが一般には避けるべきです。
1

スキルアップ/キャリアアップ(JOB@IT)