Ticket #11297

形態素INDEX作成でエラー
오픈 날짜: 2007-11-08 18:40 마지막 업데이트: 2007-11-12 12:22

Reporter:
소유자:
(None)
Type:
Status:
Open
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

■環境
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

Edit

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