[pgsql-jp: 41104] Re: pg_trgmは正しく日本語を扱えるでしょうか?
松山大樹
t.matsuyama @ wowcom.co.jp
2012年 5月 11日 (金) 10:56:35 JST
松山と申します。
扱えないか、扱えるか、というなら、扱えています。
実際に業務で使用しています。
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英数字のみ」とされているのでしょうか?
>
> よろしくお願いします。
> 以上です。
>
>
>
>
pgsql-jp メーリングリストの案内