高見 直輝
takam****@orega*****
2016年 1月 20日 (水) 10:23:55 JST
高見です。 @@演算子を使用してGROONGAの等価条件と不等価条件をそれぞれ行 おうとしているのですが、意図した結果になりません。 http://groonga.org/ja/docs/reference/grn_expr/query_syntax.html#equal-condition テーブル定義などは[groonga-dev,03855]と同じです。 テーブルには以下のレコードが存在しています。 "\st","新しいフォルダー" "\st","新しいフォルダー\desktop.ini" "\st","00201-00300" ※以下のパラメータを設定した状態で検証しました。 SET search_path = "$user", public, pgroonga, pg_catalog; SET enable_seqscan = off; まずは等価条件から。 先述のレコードの中から、『"\st","新しいフォルダー"』のみを取得するため、 以下のSQLを実行しました。 select lower(pathcombine(rootdir::text, path)) as tmp from TEST_TABLE where lower(pathcombine(rootdir,path)) @@ '"\\st\\新しいフォルダー"'; この結果、以下のレコードが取得されました。 \st\新しいフォルダー\desktop.ini \st\新しいフォルダー 次に、不等価条件を。 『"\st","00201-00300"』のみを取得するため、以下のSQLを実行しました。 select lower(pathcombine(rootdir::text, path)) as tmp from TEST_TABLE where lower(pathcombine(rootdir,path)) @@ '!"\\st\\新しいフォルダー"'; この結果は0件でした。 上記の各SQLの誤りがわかりましたら、教えてください。 なお、各SQLを実行したときにPGROONGAのデバッグログに何も出力されませんで した。 これは、そもそもPGROONGAのインデックスが使われていないということなのでしょ うか? ----------------------------- 高見 直輝 <takam****@orega*****> 株式会社オレガ TEL:03-3267-0150 FAX:03-3267-0180