[groonga-dev,04052] Re: pgroongaの@@演算子が効かない

Back to archive index

清河 宗一朗 iftha****@yahoo*****
2016年 6月 7日 (火) 14:51:42 JST


清河です。
迅速かつ丁寧な説明ありがとうございます。
なるほど、理解できました。
また、@@演算子で問題なく検索できることも確認できました。
ありがとうございました。



----- Original Message -----
>From: Kouhei Sutou <kou****@clear*****>
>To: groon****@lists***** 
>Date: 2016/6/7, Tue 14:15
>Subject: [groonga-dev,04051] Re: pgroongaの@@演算子が効かない
> 
>須藤です。
>
>In <40321****@web10*****>
>  "[groonga-dev,04050] pgroongaの@@演算子が効かない" on Tue, 7 Jun 2016 13:56:45 +0900 (JST),
>  清河 宗一朗 <iftha****@yahoo*****> wrote:
>
>> また、idx_t_tempインデックスを作成しなくても、下記SQLが動作したのです
>> が、
>> そういうものなのでしょうか。
>>  select * from t_temp where for_search %% 'pgroonga';
>>  select * from t_temp where for_search %% 'postgres';
>
>はい、そういうものです。
>
>PostgreSQLではオプティマイザーの判断によって同じ演算子を使っ
>た条件でもインデックスを使ったり使わなかったり(= シーケンシャ
>ルスキャン)します。
>
>インデックスがない場合は必ずシーケンシャルスキャンになるので
>すが、PGroongaが提供する演算子(のほとんど)はシーケンシャル
>スキャンでも動くようになっているので、インデックスがなくても
>動きます。
>
>> => select * from t_temp where for_search @@ 'pgroonga OR postgres';
>> id | for_search
>> ----+------------
>> (0 行)
>
>これは@@をシーケンシャルスキャンで実行しようとしているからで
>す。PGroongaが提供する@@はシーケンシャルスキャンをサポートし
>ているのですが、演算子を探す優先順位の関係でPGroongaが提供す
>る@@ではなくPostgreSQLが提供する@@が使われていてこうなります。
>
>PostgreSQLが提供する@@は「X OR Y」という構文ではなく「X | Y」
>という構文を使います。これはtextをtsqueryという型に変換する
>ときに使われている構文です。
>
>https://www.postgresql.org/docs/current/static/datatype-textsearch.html#DATATYPE-TSQUERY
>
>そのため、「pgroonga OR postgres」は「pgroonga」または
>「postgres」ではなく「pgroonga OR postgres」そのものを検索し
>ます。なのでヒットしません。
>
>
>説明が長くなってしまいましたが、ようはPostgreSQLが提供する@@
>ではなくPGroongaが提供する@@を使うようにすればよいです。
>
>どうすればよいかというと
>
>  SET search_path TO "$user",public,pgroonga,pg_catalog;
>
>を実行してください。これでそのセッションではPGroongaの@@を優
>先的に使うようになります。
>
>セッションだけでなく永続的に設定する場合は次のようにします。
>
>  ALTER DATABASE データベース名 SET search_path TO "$user",public,pgroonga,pg_catalog;
>
>接続するユーザーが決まっているなら
>
>  ALTER ROLE ユーザー名 SET search_path TO "$user",public,pgroonga,pg_catalog;
>
>でもよいです。
>
>
>という説明を
>http://pgroonga.github.io/ja/reference/operators/query.html
>の「シーケンシャルスキャン」のところに書かないとなぁと思って
>いるのですがまだ書けていません。。。
>
>-- 
>須藤 功平 <kou****@clear*****>
>株式会社クリアコード <http://www.clear-code.com/>
>
>Groongaベースの全文検索システムを総合サポート:
>  http://groonga.org/ja/support/
>パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
>  http://www.clear-code.com/recruitment/
>リーダブルコードワークショップ:
>  http://www.clear-code.com/services/code-reader/readable-code-workshop.html
>
>_______________________________________________
>groonga-dev mailing list
>groon****@lists*****
>http://lists.osdn.me/mailman/listinfo/groonga-dev
>
>
>
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
Download 



groonga-dev メーリングリストの案内
Back to archive index