다운로드
소프트웨어 개발
계정
다운로드
소프트웨어 개발
Login
Forgot Account/Password
계정 만들기
언어
도움
언어
도움
×
Login
Login Name
Password
×
Forgot Account/Password
Translation Status of 한국말
Category:
Software
People
PersonalForge
Magazine
Wiki
검색
OSDN
>
브라 우즈 소프트웨어
>
Internet
>
WWW/HTTP
>
Indexing/Search
>
Ludia
>
Ticket List/Search
>
Ticket #11297
Ludia
Description
Project Summary
Developer Dashboard
웹 페이지
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
History
다운로드
List of Releases
Stats
티켓
Ticket List
Milestone List
Type List
Component List
List of frequently used tickets/RSS
Submit New Ticket
Documents
Wiki
FrontPage
Title index
Recent changes
Doc Mgr
List Docs
Communication
포럼
List of Forums
도움 (2)
Open Discussion (1)
Mailing Lists
list of ML
ludia-users
News
Ticket #11297
Ticket List
Submit New Ticket
RSS
形態素INDEX作成でエラー
오픈 날짜:
2007-11-08 18:40
마지막 업데이트:
2007-11-12 12:22
monitor
ON
OFF
Reporter:
ssn
소유자:
(None)
Type:
Bugs
Status:
Open
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None
Details
Reply
■環境
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)
Show older Histories
2007-11-12 09:36
Updated by:
co-saka
댓글 올리기
Reply
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
댓글 올리기
Reply
Logged In: YES
user_id=31583
当初、こちらでも全ての文章に対してINDEXを張る必要があるのか
という意見があり、substringで切る方式を検討しましたが、
実行確認した所、
加工を施した(substringなどで)INDEXは"@@"検索時に使用されませ
んでした。
何らかの対処方法があればよろしくお願いします。
2007-11-12 11:28
Updated by:
co-saka
댓글 올리기
Reply
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
댓글 올리기
Reply
Logged In: YES
user_id=31583
回答ありがとうございます。
切ったINDEXには切ったWHERE句をという
基本的な事を忘れていました。
対処方法の確認OKでした。
Attachment File List (
0
)
Attachment File List
No attachments
Edit
Add Comment
You are not logged in.
I you are not logged in, your comment will be treated as an anonymous post. »
Login
Add Comment
Preview
Submit
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作成時の形態素数の限界を超えてしまっているのかなと
予想しています。
以上です、
よろしくお願いします。