[前][次][番号順一覧][スレッド一覧]

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>

[前][次][番号順一覧][スレッド一覧]