サーブレットとMySQLを使って、勉強しながら開発をしています。


普通の検索エンジンのように、「本 入門」としたら、「本」と「入門」というキーワードでOR検索をする、という機能を実装したいのですが、どのようなプログラムを書けば実装できるでしょうか?(ひとつのキーワードによる検索ならできるのですが…)

参考書籍やURLでも嬉しいです。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2008/12/14 03:52:34
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:sphire No.3

回答回数115ベストアンサー獲得回数12

ポイント26pt

http://www.javadrive.jp/start/string_class/index5.html

文字列の分割は split です

String str = "本 入門";
String[] keywords = str.split(" ", 0);
id:rapuntuleru

回答ありがとうございます。

2008/12/14 03:52:04

その他の回答2件)

id:goodvn No.1

回答回数228ベストアンサー獲得回数18

ポイント42pt
WHERE
  `table`.`column` LIKE '%KEYWORD1%'
  AND `table`.`column` LIKE '%KEYWORD2%'

ですね

キーワードの分割は,サーブレット側でやっておきます

id:rapuntuleru

回答ありがとうございます。

キーワードの分割は、javaでどのように実装すればいいのでしょうか?

初心者で、すみません。

2008/12/14 03:35:54
id:sphire No.2

回答回数115ベストアンサー獲得回数12

ポイント27pt

Javaはあまり使わないので、やり方だけ。

「本 入門」という文字列を、空白で区切って「本」と「入門」に分割したうえで

SQLを構築すればOKです。

たとえば以下のようなテーブルで

CREATE TABLE db1(
  id INTEGER AUTO_INCREMENT
 ,title TEXT NOT NULL
 ,PRIMARY KEY(id)
);

titleでOR検索したければSQLは

SELECT * FROM db1 WHERE title LIKE '%本%' AND '%入門%';

のようになります。

id:rapuntuleru

回答ありがとうございます。

2008/12/14 03:36:03
id:sphire No.3

回答回数115ベストアンサー獲得回数12ここでベストアンサー

ポイント26pt

http://www.javadrive.jp/start/string_class/index5.html

文字列の分割は split です

String str = "本 入門";
String[] keywords = str.split(" ", 0);
id:rapuntuleru

回答ありがとうございます。

2008/12/14 03:52:04
  • id:rapuntuleru
    質問者です。すみません、「AND検索」の間違いでした。
  • id:sphire
    ぐはぁ
    書き間違えてる
    SELECT * FROM db1 WHERE title LIKE '%本%' AND '%入門%';
    じゃなくて
    SELECT * FROM db1 WHERE title LIKE '%本%' AND title LIKE '%入門%';
    しかもid:goodvn氏に先超されてるし…鬱

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません