2012年5月11日

[pgsql-jp: 41104] Re:pg_trgmは正しく日本語を扱えるでしょうか?

松山と申します。

扱えないか、扱えるか、というなら、扱えています。
実際に業務で使用しています。


testdb=# explain analyze
testdb=# select count(*) from postCodeMaster

testdb=# where searchOnlyValue like '%スミダ%';
QUERY PLAN
-----------------------------------------------------------------
Aggregate (cost=74.31..74.32 rows=1 width=0) (actual time=0.332..0.333
rows=1 loops=1)
-> Bitmap Heap Scan on postcodemaster (cost=28.10..74.28 rows=12
width=0) (actual time=0.202..0.319 rows=8 loops=1)
Recheck Cond: (searchonlyvalue ~~ '%スミダ%'::text)
-> Bitmap Index Scan on postcodemasterix02 (cost=0.00..28.09
rows=12 width=0) (actual time=0.161..0.161 rows=8 loops=1)
Index Cond: (searchonlyvalue ~~ '%スミダ%'::text)
Total runtime: 0.459 ms
(6 rows)

2文字以下だと、Seq Scan になるのは、既出の通りなので、
アプリケーション側で、文字数をチェックして弾いています。

testdb=# explain analyze
testdb=# select count(*) from postCodeMaster
testdb=# where searchOnlyValue like '%スミ%';
QUERY PLAN
-----------------------------------------------------------------
Aggregate (cost=5638.41..5638.42 rows=1 width=0) (actual
time=131.806..131.807 rows=1 loops=1)
-> Seq Scan on postcodemaster (cost=0.00..5628.96 rows=3779
width=0) (actual time=0.033..127.062 rows=6971 loops=1)
Filter: (searchonlyvalue ~~ '%スミ%'::text)
Total runtime: 131.861 ms
(4 rows)

> MauMauといいます。お世話になります。
>
>
> contrib/pg_trgmが日本語を正しく扱えるか、どなたかご存知でしたら教えてい
> ただけますか?
> 次のページを見ると、trgm.hのKEEPONLYALNUMの定義を削除すれば、
> 日本語の中間一致検索ができるとされています。
>
> http://lets.postgresql.jp/documents/technical/text-processing/3#contains
>
> しかし、次のページによると、9.1のリリース直前に、
> 「pg_trgmはASCII英数字を扱える」とマニュアルが変更されました。
>
> http://archives.postgresql.org/pgsql-hackers/2011-09/msg00169.php
>
> 前者の記事のようにして日本語を扱えるようにした場合、何か問題が発生しうる
> から
> 正式マニュアルでは「ASCII英数字のみ」とされているのでしょうか?
>
> よろしくお願いします。
> 以上です。
>
>
>
>


投稿者 xml-rpc : 2012年5月11日 10:56
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/110409
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。