mysql:280
From: 民斗 <民斗 <tommy@xxxxxxxxxx>>
Date: Sun, 18 Oct 1998 05:21:52 +0900
Subject: [mysql 280] SQL の検索条件について
MySQL を使った日本語文書検索システムを作ってみました。 が、会社の業務で作ったので、残念ながら公開できません…(^^; あらかじめ、chasen で文書を単語毎に区切り、名詞だけを抜き出して、 MySQL で作ったキーワードテーブルに登録しておき、そのテーブルを検索する という方式です。 まだサンプルデータの数が少ないですが、期待通り(期待以上かも)の速度で 動いてくれてます。 で、一つ質問があります。MySQL というか SQL についての質問なんですが…。 次のようなテーブル(T)に、文書番号(id)とキーワード(str)を登録してあると します。 create table T (id int not null, str char(32) not null); # index は省略 1) "hoge" というキーワードと "fuga" というキーワードの両方を含む文書を 検索する時は、次のようにできます。 select a.id from T as a left join T as b using (id) where a.str="hoge" and b.str="fuga"; 2) "hoge" または "fuga" を含むという場合は、次でできます。 select id from T where str="hoge" or str="fuga"; ここまではいいんですが、もっと複雑な条件の時にどうすればいいのか わかりません。例えば、 「"hoge" または "fuga" を含み、かつ "herohero" も含む」 とか…。しかもそれをプログラムから自動的に生成したいのです。 どうも、1) と 2) の文法が違いすぎて、SQL では1行で書くのは無理のような 気がしてるのですが…。 なんかうまい方法があるでしょうか? -- 民斗 <tommy@xxxxxxxxxx>