[Ludia-users 202] Re: PostgreSQL8.3の検索結果につきまして

Back to archive index

hirok****@mx4***** hirok****@mx4*****
2008年 3月 10日 (月) 18:20:10 JST


岩崎さん

小谷です。詳しいご説明ありがとうございました。

なるほど、演算子の重複が問題でしたか。
おかげさまで、現在正常に動いているようです。

次期バージョンのLudiaが出た際には、そちらも利用させていただきます。


どうもありがとうございました。


<iwasa****@nttda*****>さん:
> 岩崎です。こんにちは。
> 
> 
> > N-gramインデックスにて作成したフィールドの検索時に正しく検索結果が返
って
> > きませんでしたので、原因がわかる方がおられればお知らせいただきたく思
いま 
> 
> PostgreSQL8.3からはtsearch2という
> これまでcontribにあった機能が標準で入っているのですが、
> tsearch2も@@演算子を定義しているため、
> そちらの関数が実行されていることが原因だと思われます。
> (細かくいえば、PostgreSQL8.2以前のtsearch2の場合は、
> 右辺と左辺にtext型を取る@@演算子は定義していなかったため、
> Ludiaと共存させても問題ありませんでした。)
> 
> 
> PostgreSQLのshareディレクトリにインストールされたpgsenna2.sqlを、
> 編集して@@と書いてある部分を他と被っていないもの(例えば%%)と
> 置き換えて試してみていただけないでしょうか?
> (ソースからインストールを繰り返し行うのであれば、
> ソースアーカイブに含まれるpgsenna2_83.sql.inを編集したほうが効率的です。
)
> 
> 
> PostgreSQL8.3以降向けの演算子については、
> 次のLudiaのリリースで変更される予感です。
> 
> 
> 
> 
> -----Original Message-----
> From: ludia****@lists*****
> [mailto:ludia****@lists*****] On Behalf Of
> hirok****@mx4*****
> Sent: Sunday, March 09, 2008 1:18 AM
> To: ludia****@lists*****
> Subject: [Ludia-users 199]PostgreSQL8.3の検索結果につきまして
> 
> 小谷と申します。
> よろしくお願いします。
> 
> N-gramインデックスにて作成したフィールドの検索時に正しく検索結果が返っ
て
> きませんでしたので、原因がわかる方がおられればお知らせいただきたく思い
ま
> す。
> PostgreSQLを8.3.0のバージョンものを使用しているせいかもしれませんが。。
。
> 
> 使用したソフトウェア環境は以下のとおりです。
> 
> Linux CentOS 5.0
> Ludia 1.4.0
> Sennna 1.0.9
> mecab 0.96
> 
> PostgreSQL 8.3.0
> 
> 
> 検証用にThinkitの記事と同様のテーブルを作成しました。
> http://www.thinkit.co.jp/cert/article/0612/8/4/3.htm
> 
> また、PostgreSQL 8.2.3 + Ludia 1.3.1 の結果も載せておきます。
> 142件のレコードが返ってくるのが正常と思われます。
> 
> 
> ■1. addressフィールドにのみ2-gramインデックスを作成
> 
> SELECT * FROM zip WHERE address @@ '*D+ 春日町' OR zipcode = '春日町';
> 
>  -> Postgres8.2.3 + Ludia 1.3.1  正しくデータ取得
>  -> Postgres8.3.0 + Ludia 1.4.0 結果が0件
> 
> [explainの結果]
> Seq Scan on zip  (cost=0.00..3507.68 rows=123 width=42)
>    Filter: ((address @@ '*D+ 春日町'::text) OR ((zipcode)::text = '春
日
> 町'::text))
> 
> 
> ■2. zipフィールドにB-treeインデックスを作成
> 
> SELECT * FROM zip WHERE address @@ '*D+ 春日町' OR zipcode = '春日町';
> 
>  -> Postgres8.2.3 + Ludia 1.3.1  正しくデータ取得
>  -> Postgres8.3.0 + Ludia 1.4.0 正しくデータ取得
> 
> [explainの結果]
>  Bitmap Heap Scan on zip  (cost=9.50..364.11 rows=123 width=42)
>    Recheck Cond: ((address @@ '*D+ 春日町'::text) OR ((zipcode)::text 
= 
> '春日町'::text))
>    ->  BitmapOr  (cost=9.50..9.50 rows=123 width=0)
>          ->  Bitmap Index Scan on idx_ngram  (cost=0.00..5.17 rows=122 
> width=0)
>                Index Cond: (address @@ '*D+ 春日町'::text)
>          ->  Bitmap Index Scan on idx_zipcode  (cost=0.00..4.27 rows=1 
> width=0)
>                Index Cond: ((zipcode)::text = '春日町'::text)
> 
> 
> ■3.  addressフィールドにのみ2-gramインデックスを作成し、*D+を削除
> 
> SELECT * FROM zip WHERE address @@ '春日町' OR zipcode = '春日町';
> 
>   -> Postgres8.2.3 + Ludia 1.3.1  正しくデータ取得
>   -> Postgres8.3.0 + Ludia 1.4.0  北海道紋別郡興部町興部(春日町)とい
う
> データ1件のみ取得
>   
>   
> [explainの結果]
>  Seq Scan on zip  (cost=0.00..3507.68 rows=123 width=42)
>    Filter: ((address @@ '春日町'::text) OR ((zipcode)::text = '春日町'
::
> text))
>       
>       
> 以上、よろしくお願いいたします。
> 
> 
> 
>        
> 
> _______________________________________________
> Ludia-users mailing list
> Ludia****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/ludia-users
> 
> _______________________________________________
> Ludia-users mailing list
> Ludia****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/ludia-users




Ludia-users メーリングリストの案内
Back to archive index