DBでの高速な全文検索についての質問です。現在、PHPとPostgreSQLを使用しています。データベースのレコード内のテキストを、一般的な検索エンジンのように高速に全文検索可能とするには、どのような方法があるでしょうか?(もし実現不可能であるなら代替手段を教えて下さい)

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/04/15 10:50:45
  • 終了:--

回答(5件)

id:livings No.1

livings回答回数10ベストアンサー獲得回数02004/04/15 12:48:23

ポイント18pt

最初のURLはダミーです。

全文検索の場合、そのデータをフルスキャンするわけですから、全データにアクセスすることを考慮した場合、テーブルデータがすべてメモリに載り、極力ハードディスクアクセスが押さえられる方法を考えた方がよろしいかと思います。

高速アクセスはテーブルの設計にもよります。

検索内容からハッシュ値を計算し計算するのであれば、場合によってはRDBではなく、高速XMLエンジンを利用するという手もあるかと思います。

http://www.neocore.jp/

XMLDB / XMLデータベース NeoCore 国内シェアNo.1

id:samejima No.2

samejima回答回数92ベストアンサー獲得回数82004/04/15 13:34:27

ポイント18pt

http://namazu.org/~satoru/sary/

sary: a suffix array library and tools

suffix array

http://nais.to/~yto/tools/sufary/

SUFARY 臨時復旧ページ

id:tohoku No.3

tohoku回答回数8ベストアンサー獲得回数02004/04/15 20:53:50

ポイント18pt

NAMAZUのPHP版をいじってみてはどうでしょうか。

id:rnakaji No.4

rnakaji回答回数32ベストアンサー獲得回数02004/04/15 22:56:46

ポイント18pt

http://namazu.org/~satoru/pub/sd-2000-11/

使ってみよう Namazu 2.0

テキストファイルだったらNAMAZUが使えるんですけどね。

お役にたてなくてすみません

id:Ganba No.5

Ganba回答回数4ベストアンサー獲得回数02004/04/16 00:14:10

ポイント18pt

以下のような手順ではどうでしょうか?

1.バッチ(1回/日とか)でテーブルデータをpg_dumpの”-a -o”オプションでOID付きでファイル出力

2.grep(egrep or fgrep)のような文字列検索で先頭のOIDのみ抽出(手作りのPHPスクリプト)

3.抽出したレコードのOIDでPostgreSQLを検索

安直過ぎますか?

id:yokoyama_ken

いえいえ、ありがとうございます。

2004/04/19 22:36:51

コメントはまだありません

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません