待辦事項 #11297

形態素INDEX作成でエラー
啟用日期: 2007-11-08 18:40 最後更新: 2007-11-12 12:22

回報者:
負責人:
(無)
類型:
狀態:
開啟
元件:
(無)
里程碑:
(無)
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
檔案:

細節

■環境
Redhat Enterprise Linux 4 U5
ludia 1.3.1 (mecab-0.96 ipadic-2.7.0 senna-1.0.9)
postgresql 8.2.4

■設定
postgres.conf
・ludia.max_n_sort_result = 100000
・ludia.enable_seqscan = on
・ludia_sen_index_flags = 31
・ludia.max_n_index_cache = 16
・ludia.initial_n_segments = 2048

■DB
・table : id int4(キー),data text

■データ
id=1 : data=("_"を30文字)
id=2 : data=("_"を55万文字)

※テスト用のサンプルデータでは無く、メール経由のデータ
を保存している為、
こういったデータ(スパムなどにより)になってしまう物があ
ります。

■現象

形態素INDEXを作成時にエラーが発生します

ERROR: pgsenna2: sen_index_update failed 1,0

・DB上で逆の並び方の場合は作成出来る。
(select * from tableで1,2では作成失敗、2,1では作成出来
る。)
・id 1,2共に単体だとINDEX作成出来る
・fulltextbは問題無く作成出来る
・他の文字("a"の連続)では上記の55万文字を超えるデータで
も作成出来る。
mecabにて単体実行してみると"_"は一形態素として扱われて
いるので
INDEX作成時の形態素数の限界を超えてしまっているのかなと
予想しています。

以上です、
よろしくお願いします。

Ticket History (3/4 Histories)

2007-11-12 09:36 Updated by: co-saka
評語
Logged In: YES
user_id=23292

以下のログが出ていると思います。
LOG: pgsenna2: |C| buffer(262160) is full (262112 <
499984) in sen_inv_update
ERROR: pgsenna2: sen_index_update failed 1,0
ssnさんがおっしゃる通り、形態素の大きいさの限界を超えている
ようです。これは現在の仕様です。sennaのソースには、そのあた
りにtodoと書かれているので、いつか変わる可能性があります。

=# CREATE INDEX idx ON tab USING fulltext(substring(col,
1, 10000));
=# SELECT * FROM tab WHERE substring(col, 1, 10000) @@ '検
索';
上記のように、メールの前半10000文字だけをインデックス対象に
してはいかがでしょうか?スパムを全て検索対象にするのはナン
センスだと思います。10000文字もあれば、普通のメール本文は全
て含まれるので、問題はないと思います。
2007-11-12 10:21 Updated by: ssn
評語
Logged In: YES
user_id=31583

当初、こちらでも全ての文章に対してINDEXを張る必要があるのか
という意見があり、substringで切る方式を検討しましたが、
実行確認した所、
加工を施した(substringなどで)INDEXは"@@"検索時に使用されませ
んでした。

何らかの対処方法があればよろしくお願いします。
2007-11-12 11:28 Updated by: co-saka
評語
Logged In: YES
user_id=23292

=# CREATE INDEX idx ON tab USING fulltext(substring(col,
1, 10000));
=# SELECT * FROM tab WHERE substring(col, 1, 10000) @@ '検
索';
このクエリを実施してみてください。
インデックスが使用されます。
2007-11-12 12:22 Updated by: ssn
評語
Logged In: YES
user_id=31583

回答ありがとうございます。

切ったINDEXには切ったWHERE句をという
基本的な事を忘れていました。

対処方法の確認OKでした。

Attachment File List

No attachments

編輯

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登入