- 締切済み
MySQLで全文検索について
MySQLで全文検索を行いたく、色々と調べ、試行錯誤をしたのですが どうしてもできないので、mysqlでの全文検索のやり方がわかるかたがいらっしゃいましたら お教え願えますでしょうか。 私がやったこと 0。Mysqlのバージョン 5.5.23をインスコ my.confにft_min_word_len=1を追加 mysql再起動 1。MyISAM型のbookテーブルを作成(utf8_general_ciでとりあえず idとsearch_wordsという2カラムのみ idをprimaryに設定) 2。検索対象であるsearch_wordsをFulltext型に変換 sql> alter table book add fulltext( search_words ); 3。データを登録 insert into book (id, search_word) value (1, '夏目漱石 こころ natsume souseki kokoro BOOK-NO-012 時は明治末期。夏休みに鎌倉へ旅行をしていた「私」は鎌倉に来ていた「先生」と出会い交流を始め東京に帰った後も先生の家に出入りするようになる。先生は奥さんと静かに暮らしていた。先生は私に何度も謎めいた、そして教訓めいたことを言う。私は、先生に過去を打ち明けるように迫ったところ来るべき時に過去を話すことを約束した。'); 4。mecabで分かち書きした、「夏目」「漱石」をスペースで区切った文字で検索 っがしかし、検索結果が帰ってこない 実行してみたSQL select * from book where match( search_word ) against( '夏目 漱石' IN BOOLEAN MODE); select * from book where match( search_word ) against( '+夏目 +漱石' IN BOOLEAN MODE); select * from book where match( search_word ) against( '"夏目 漱石"' IN BOOLEAN MODE); select * from book where match( search_word ) against( '"+夏目 +漱石"' IN BOOLEAN MODE); select * from book where match( search_word ) against( '"+夏目 +漱石"' IN BOOLEAN MODE); select * from book where match( search_word ) against( '"*夏目 *漱石"' IN BOOLEAN MODE); select * from book where match( search_word ) against( '"*夏目* *漱石*"' IN BOOLEAN MODE); 「夏目漱石」とひとくくりにした文字列で検索すると、レコードが帰ってきます また、against( 'natsume souseki' IN BOOLEAN MODE); も帰ってきます 実際にやってみたいことは、上記の文章で「先生」「鎌倉」「私」「夏目」の4語で検索すると 上記のレコードが帰ってくるということがやりたいですのですが、 select * from book where match( search_word ) against( '夏目 先生 鎌倉 私' IN BOOLEAN MODE); のSQLや対象文字列に+や*を付けたものを実行しても引っかかりませんでした。 私が行った設定/sqlに不備がございましたらご指摘/ご指導いただけませんでしょうか。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
お礼
御回答いただきましてありがとうございます。 「senna」とは初めて聞きました。。。 今日、帰ってからさっそく調べてみたいと思います。 何か動きがございましたらまたご連絡いたします。 貴重な情報、ありがとうございました。