mysql:7570
From: "HIGUCHI Koichi" <"HIGUCHI Koichi" <ko-ichi@xxxxxxxxxx>>
Date: Sun, 20 Apr 2003 09:40:32 +0900
Subject: [mysql 07570] Re: 文書検索のためのテーブル設計
こんにちは、樋口です。
ご返信下さった皆様ありがとうございます。
まずお詫びさせていただきたいのですが、「自分のやりたいこと」ですら、正確に表
現できていませんでした。
大変申し訳ありませんでした。
実は、
> 「今日 or 明日 >= 2」
といったOR検索だけでなく、AND, OR, NOTや()を自由に組み合わせての検索を行いた
いのです。
かわじさんにいただいた返信にあった、頻度(frequency) のフィールドを加えるとい
う方法は全く思いつかなかったものでした。
OR条件の検索であれば、非常にシンプルで良さそうなのですが、残念ながら、
「今日」と「明日」が両方含まれている文書を探す
といったAND条件や、
「今日」が含まれていて「明日」が含まれない文書を探す
といった(AND)NOT条件をSQLで表現するのは難しそうに思えました。
河瀬さんにいただいた返信にあった、生の文書をテーブルに放り込んで、
WHERE body LIKE '%今日%' OR body LIKE '%明日%明日%'
というような指定を行う方法では、AND, OR, NOT指定が簡単に行えそうです。
(さらに、テーブル準備も楽そうです :)
しかしこの方法では、当然なのですが、「京都」を検索すると「東京都」にもヒット
してしまうのです。
そこで、事前に形態素解析(品詞分解もどき)を行うことで、以下のようなテーブル
を作っています。
これを元に検索を行いたいのです。
#---------------------#
順番 - 文書ID - 単語
1 - 1 - 今日
2 - 1 - は
3 - 1 - 良い
4 - 1 - 天気
5 - 1 - だ
6 - 1 - 。
7 - 2 - 明日
8 - 2 - は
9 - 2 - どう
10 - 2 - かな
#---------------------#
# テーブルは簡略化して載せさせていただきました。
# 実際には、生の単語でなく単語IDが入っています。
# そして、単語テーブルやら品詞テーブルやらが他にも
# 存在しています。
# 川合孝典さんにご指摘いただきました、順番フィールド
# は、前回のメールでは書き忘れておりました。
# また、形態素解析には茶筌を利用しています。
川合孝典さんに教えていただいたナマズ本は、届き次第、読んでみようと思います。
「MySQL Full-text Search」についても検討はしていたのですが、茶筌を十分に活か
すことが難しそうなので敬遠していました。
というのは、茶筌は品詞分解もどきを行って、単語の基本形まで教えてくれますか
ら、これを使って、
・「使う」と指定するだけで「使う」、「使えば」、「使って」などを
含む文書を全て検索する
・必要に応じて「使わない」という未然形を含む文書だけ検索する
といったことを行いたいのです。
# 前のメールに書いたURLでお見せしている、コンコーダンスでは、
# 既にこういったことを実現しております。
それに、検索結果の表示順(重み付け)についても、自分で自由に決めたいのです。
(仮に処理時間が少々増えるという犠牲を払うとしても)
「DBIx::FullTextSearch」については、不勉強で、知りませんでした。
いろいろポインタを示していただいてありがとうございました。
大阪大学 大学院 博士課程
樋口耕一
# なお、将来的には、次のような検索機能を追加していきたいと考え
# ています。
# 1. フレーズ検索
# 「『良い』の直後に『天気』があること、とといった指定
# 2. メタデータによる検索
# 例えば新聞記事なら、「91年の記事であること」といった指定
#
# もちろん、必要に応じて別にテーブルやスクリプトを追加するのですが、
# 1つの検索式の中に、単語の有無の指定、フレーズ指定、メタデータ
# 指定が混在し、ANDやORやNOTでそれぞれの指定が組み合わさ
# れているという検索式を扱いたいのです。
7566 2003-04-20 04:16 ["HIGUCHI Koichi" <ko] 文書検索のためのテーブル設計 7567 2003-04-20 04:59 ┣[Shinya Kawaji <kawaj] 7568 2003-04-20 05:07 ┣[Shogo <shogo@xxxxxxx] 7569 2003-04-20 06:51 ┣["KAWAI,Takanori" <GC] -> 7570 2003-04-20 09:40 ┗["HIGUCHI Koichi" <ko]