• 締切済み

MySQL4.0での日本語検索

MySQL4.0で簡単なワード検索をしようと思っています。 HTMLのフォームを使い、単語をいれてもらう形式です。 FULLTEXTを使い日本語検索をしようとおもったのですが、どうやら格納するデータおよび、検索する際の単語をお互い16進変換すれば大丈夫そうなのですが、データを登録する際の諸事情によりそういうわけにも行かず困っています。 LIKE '%テスト%' みたいな検索だとさすがに重過ぎるわけです。 なにかよい方法はないのでしょうか? ちなみに、サーバ環境はレンタルサーバのためかなり制約があります。。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>データを登録する際の諸事情によりそういうわけにも行かず困っています。 全文検索の仕組みを理解していないですね? 英語圏はワードがスペースで区切られているので、それに対応する 仕組みとしてつくられているものです。よってkakasiなどで単語ベースで スペース区切りしないことには全文検索の対象とはなりません。 できないなら%テスト%で検索する以外ないでしょう。 当然インデックスもなにもきかないので遅いのはあきらめるしかありません。

noname#84443
質問者

お礼

ご指摘の通り、知識が浅く全文検索の仕組みを理解していませんでした。 なるほど、登録するデータもスペースで区切らないといけないわけですね。 まったく知りませんでした… ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MySQLに画像を格納してperlで取り出す方法

    1:HTMLのフォームから画像(ファイル形式はそのつど変わる)をアップしてもらい   その画像のバイナリデータをMySQLへ格納したい。 2:上記で格納したデータをperlでセレクトして取り出しブラウザに表示させたい。 以上を行う時はどの様なやり方が一般的なのでしょうか?

  • PHP、MySQLでテキストを処理する

    英語やドイツ語など、スペースで区切られた言葉で作られた任意の文書を解析 したいのです。解析内容は、単語ごとに分解し、その単語が出現した回数をカウントし DB(MySQLなど)に格納します。PHPとMySQLで何とか実現したいのですが、どのような 方法で、どんな関数を使うかなど教えていただけないでしょうか。 入力されるデータはTEXT形式(WORDもあり)で、WebのフォームからCut&Pasteや 直接打ち込み などの方法で入れます。格納形式は半角の小文字です。 DBに格納されたデータは別のDBと連携させる予定です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • MySQLで日本語検索をする時の書き方

    現在JDBCを用いてデータの管理システムを構築しています。 その中で登録したデータをキーワードから検索し、表示させたいのですが…。 日本語文を検索するためには '%keyword%' としなければならないという風にあり、実際にMySQL上でやって見たときはうまく検索されました。 しかし、ソースで書くとなった時の文章がわからないので教えてもらえませんでしょうか。 現在以下のような文になっています。 ResultSet result = state.executeQuery (" select * from database where summary like binary \"" + keyword + "\"") \""や+の扱いが良くわからず、また探してみても探しきれませんでした。 宜しくお願いします。

    • ベストアンサー
    • Java
  • MySQLの日本語LIKE検索について

    お世話になります。 MySQLを使用して、日本語のLIKE検索について期待する結果が得られず困っております。 ご教授いただきたく投稿させていただきました。何卒宜しくお願いします。 ●期待する結果 日本語を含むフィールドを対象にLIKE検索を実行し、該当するレコードを抽出したい。 ●現状の結果 検索する文字列によって、全く関係のないレコードが含まれる場合がある。 ※正しく結果を得られる場合もあります。 (特に漢字一文字などの場合が多い様な気がします。) ●SQL SELECT * FROM t_product WHERE detail LIKE '%日本語の文字列%'; 因みに環境他は以下のとおりです。 ------------------------------------------------------------------ 環境 ------------------------------------------------------------------ OS:RedHatES2.1 MySQL:3.23.58 ------------------------------------------------------------------ /etc/my.cnf ------------------------------------------------------------------ [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock [mysql.server] user=mysql basedir=/var/lib [safe_mysqld] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid ------------------------------------------------------------------ PHPMyAdminで実行 ------------------------------------------------------------------ SHOW VARIABLES LIKE '%char%' character_set->latin1 character_sets->latin1 big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin2 latin5 swe7 usa7 win1250 win1251 win1251ukr ujis sjis tis620 (適宜改行しております。) ------------------------------------------------------------------ 宜しくお願いします。

  • MySQLにおける検索結果

    Windows2000のIISでMySQLをインストールしました。 インストール自体はうまくいき、 また、ODBCを入れてAccessから接続もできるようにしました。 ところが、このAccessから検索をしたところ、 検索結果がおかしいのです。 【環境】 Windows2000 IIS MySQL Ver.3.23.38 Access2000 【検索SQL】 Select * from table where name like 'て% 【結果】 name ----- ゆきたに ゆら 上記のように「name」の上1文字が「て」で 始まるデータとしたはずなのに、「ゆ」で始まるデータが 出てきてしまいました。 同じく上1文字が「と」で始まるデータで検索をしても、 同じ結果が出ています。 念のため、likeではなく、Left(name,2) = 'て'又は'と'で 検索もしましたが、同じ結果でした。 何が悪いのでしょうか? よろしくお願いします。

  • MYSQLで違う検索結果が出てしまいます。

    こんにちは。 現在PHP4+MYSQLでホームページの検索サイトを作っています。 カテゴリ検索とキーワード検索ができるようにしているのですが、 キーワード検索をすると、キーワードが入っていないレコードの情報まで表示されてしまいます。 エンコード設定に問題があるかも知れないのですが、 ・全てのページのHTMLのエンコード設定 ・全てのページのメタタグのエンコード設定 ・MYSQLの文字コード設定 これらは全てEUCに統一されています。 その他にエンコード設定するべきところがあるのでしょうか? それとも別なところに原因があるのでしょうか? 動作環境はレンタルサーバーなので詳しい設定まではわかりませんが、 Linux 2.4.X RedHat 7.x Apache/1.3.2X mysql-3.23.46 です。 PHPのバージョンまではわかりませんでした。 わかる方いらっしゃいましたら教えてください。

    • ベストアンサー
    • PHP
  • MySQL登録データを別のサーバーのMySQLに写したい

    こんにちは。データベース初心者です。 現在MySQL利用可能のレンタルサーバーでデータ ベース(PHP)を扱っています。 こんど、レンタルサーバーを変えて、運営したい と思うのですが(JSPを使いたいので)、 その際に、いままでのMySQL上のデータをそのまま 新しいレンタルサーバー上のMySQLに写したいのです。 このやり方がよくわかりません。 現在のサーバー上で、設定画面から、エクスポート という項目があるのですが、それを実行しても、 ブラウザ上に、SQL文がいろいろ表示されるだけで、 ファイルとしては、なにもダウンロードされません。 何か方法があるとおもうのですが。 何か分かる人、お願いします。

  • MySQLのTIME型データをPHPで表示変更したいです。

    PHPとMySQLで、時間情報の取り扱いを試しています。 まず、MySQLにはTIME型で「10:00:00」などの時刻情報を格納しています。 それを、PHPでSELECTしてHTMLの中に表示したいのですが、 その際、2つの点でうまくいかずに困っています。 1 PHPでHTMLの中に表示するときには、「時」と「分」だけの、「10:00」の形式で表示したいのですが、方法がわかりません。 (いくつか関数を試しても、どれもTIMESTAMP型を扱うものでした) 2 例えば、「4時」のデータの場合「04:00:00」となりますが、これを「4:00」のように語頭の0を削って表示したいです。 おそらくどちらもMySQLに格納する方法を文字列型にすればいいのかとも思うのですが、SELECTの際に現在時刻との比較(現在時刻より早いか遅いかなど)を行いたいので、それができません。 何かいい方法がありましたら、教えて頂ければありがたいです。 

    • 締切済み
    • PHP
  • MySQLからデータを取得すると日本語が「??」と表示される

    PHPとMySQLを使い、ブラウザでデータベースの読み書きをするプログラムを作っています。 ローカルで作成しているときは特に問題が無かったのですが、いざサーバマシンにアップしてみると問題が発生するようになりました。 【事象】 1.MySQLからデータを読み込みブラウザに表示すると、日本語のデータのみ「??」と表示される。 2.ブラウザからMySQLへデータの書き込みをしようとすると書き込みが出来ない。 【現時点での切り分け】 1.GETでデータを渡しており、受信した方で$_GET['hoge']を表示させると正常に表示される。ただし、データをMySQLに格納する際にエラーがでる。 2.英数字の読み書きは問題なし。 3.サーバマシンを直接操作し、コマンドプロンプトからデータを入力すると日本語でも正常に格納される。 【ローカルマシン】 Apache2.xx PHP 4.xx MySQL 5.xx 【サーバマシン】 Apache 2.2.0 PHP 5.1.2 MySQL 5.0 【設定等】 PHP、MySQLの両方とも文字コードをSJISに設定しています。 また、METAタグで「charset=Shift_JIS」と指定しています。 Apacheのhttpd.confファイルにおいてISO-8859-1をコメントアウトしましたが改善されませんでした。 mb_convert_encodingを使って文字コードを強制的に(?)SJISにして書き込もうとしてもダメでした。 読み込みも然りです。 色々と試してみましたが全然改善されず困ってます。 どなたかアドバイスをいただけましたらうれしいです。

    • ベストアンサー
    • PHP
  • 複数カラム検索で、LIKE "%検索語%"

    複数カラム検索をしたいと思い、リンク先の通り、 WHERE concat(field1,char(0),field2) LIKE "%検索語%" としたらうまくいったのですが、 そのページに書いてあることが気になるので、教えてください ▽MySQLで複数フィールドから同一語を検索するには・・・ - MySQL - 教えて!goo   http://okwave.jp/qa/q2634613.html ・char(0)て何でしょうか? >%データ%は全件を検索するため効率うんぬんを論ずるような仕組みではない ・どういう意味でしょうか? ・全件検索する際は、LIKE検索を使わないのでしょうか? 全文検索エンジン(?)を利用するのでしょうか? ・全件検索しなければ(例えば2カラムだけ)、LIKE検索を利用しても良いのでしょうか? ・あるいは、データ規模が少なければ、LIKE検索を利用しても良いのでしょうか? >本番ではこんなことはしませんがあくまでも遊びということで ・どういう意味でしょうか? ・concatで LIKE 検索を普通はしない、ということでしょうか? ・それとも、LIKE 検索で、char(0)などのセパレータを挟まない、ということでしょうか? ・あるいは、全件検索でLIKE検索を普通は使わない、ということでしょうか?

    • ベストアンサー
    • MySQL