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

mysql:5419

From: Tatsuhiko Miyagawa <Tatsuhiko Miyagawa <miyagawa@xxxxxxxxxx>>
Date: Sat, 27 Apr 2002 12:30:27 +0900
Subject: [mysql 05419] Re: Full-text Search

宮川です。

# dbi-japan もつけておきました。

At Fri, 26 Apr 2002 10:52:49 +0900,
KAWAI,Takanori <GCD00051@xxxxxxxxxx> wrote:
 
> 全文検索に萌えている(?)川合孝典です。

pack して mysql をだますというのはなかなか面白いアプローチですね!

で、川合さんの Wiki にも一部記述がある DBIx::FullTextSearch[1] も 
chasen を使うことで日本語でもうまく動きましたので一応ご報告。

[1] http://search.cpan.org/search?dist=DBIx-FullTextSearch

DBIx::FullTextSearch は MySQL Fulltext Search とはある意味反対のアプロー
チで、

1: 任意のドキュメント(ファイル、URL、そしてもちろんMySQLテーブルのカ
   ラム etc)に対して
2: インデックスをMySQL のテーブルとして保存

ということをします。すごく説明しづらいのですが、要は MySQL の検索が爆
速であることを利用して、「どの単語がどのドキュメント (1: に相当) に存
在するか」を MySQL テーブルにデータとして持ち、検索はそのテーブルから
SELECTすることでおこなうというわけです。

ちなみにテーブルの持ち方は、検索のやり方次第で数通りから選べます。詳し
くはperldoc を参照してください。

利点としては

* Perl で書かれているので (mysql 本体より) ハックが楽である ;)
* 検索はたぶんかなり高速

欠点としては

* インデックスとなるテーブルの更新はアプリケーション側が責任を持つ必要
  がある (DBIx::FullTextSearch の APIを利用) 

という感じです。欠点とはいっても、ChaSen の処理が若干重いので、バッチ
化できるメリットもありますし、

  http://search.cpan.org/search?dist=Class-DBI-mysql-FullTextSearch

とかと組み合わせればトリガっぽく自動更新も可能だと思います。

Text::ChaSen を使ったテストコードはここにおいておきました。
http://bulknews.net/lib/tmp/

即席でとっても汚いです。index_splitter のあたりはソースコード読まない
と意味わかりません。
# サンプルデータは川合さんのページからいただきました ;)


-- 
Tatsuhiko Miyagawa <miyagawa@xxxxxxxxxx>

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

      5375 2002-04-20 22:23 [<moeru@xxxxxxxxxx>  ] Full-text Search                        
      5376 2002-04-20 23:19 ┗[とみたまさひろ <tomm]                                       
      5377 2002-04-20 23:35  ┗[<moeru@xxxxxxxxxx>  ]                                     
      5378 2002-04-21 00:34   ┗[とみたまさひろ <tomm]                                   
      5379 2002-04-21 00:47    ┗[<moeru@xxxxxxxxxx>  ]                                 
      5381 2002-04-21 07:37     ┣["KAWAI,Takanori" <GC]                               
      5383 2002-04-21 11:13     ┃┗[<moeru@xxxxxxxxxx>  ]                             
      5386 2002-04-21 23:19     ┃ ┗["KAWAI,Takanori" <GC]                           
      5387 2002-04-22 00:13     ┃  ┗[<moeru@xxxxxxxxxx>  ]                         
      5401 2002-04-25 11:06     ┃   ┗["KAWAI,Takanori" <GC]                       
      5403 2002-04-25 12:14     ┃    ┗[<moeru@xxxxxxxxxx>  ]                     
      5404 2002-04-25 14:10     ┃     ┣["KAWAI,Takanori" <GC]                   
      5407 2002-04-26 01:10     ┃     ┃┣[<moeru@xxxxxxxxxx>  ]                 
      5408 2002-04-26 07:44     ┃     ┃┃┗["KAWAI,Takanori" <GC]               
      5410 2002-04-26 09:47     ┃     ┃┃ ┗[<moeru@xxxxxxxxxx>  ]             
      5411 2002-04-26 10:52     ┃     ┃┃  ┣["KAWAI,Takanori" <GC]           
      5417 2002-04-27 00:22     ┃     ┃┃  ┃┣[<moeru@xxxxxxxxxx>  ]         
->    5419 2002-04-27 12:30     ┃     ┃┃  ┃┗[Tatsuhiko Miyagawa <]         
      5421 2002-04-27 12:46     ┃     ┃┃  ┃ ┣["TOYOSHIMA, Masayuki]       
      5422 2002-04-27 13:06     ┃     ┃┃  ┃ ┃┣[Tatsuhiko Miyagawa <]     
      5423 2002-04-28 11:50     ┃     ┃┃  ┃ ┃┃┗["TOYOSHIMA, Masayuki]   
      5424 2002-04-28 18:36     ┃     ┃┃  ┃ ┃┗["KAWAI,Takanori" <GC]     
      5425 2002-04-28 18:50     ┃     ┃┃  ┃ ┗["KAWAI,Takanori" <GC]       
      5432 2002-05-05 14:58     ┃     ┃┃  ┃  ┗[<moeru@xxxxxxxxxx>  ]     
      5416 2002-04-26 20:20     ┃     ┃┃  ┗[Hidetoshi OKAWA <hid]           
      5420 2002-04-27 12:46     ┃     ┃┗[Tatsuhiko Miyagawa <]                 
      5405 2002-04-25 18:33     ┃     ┗[Hidetoshi OKAWA <hid]                   
      5382 2002-04-21 08:04     ┗[とみたまさひろ <tomm]