高見 直輝
takam****@orega*****
2016年 2月 5日 (金) 16:47:10 JST
高見です。 > https://github.com/pgroonga/pgroonga/blob/master/sql/full-text-search/text/single/query/seqscan.sql > のデータで > > SELECT id, content > FROM memos > WHERE content @@ ARRAY_TO_STRING(ARRAY['rdbms','engine'],' OR '); > > こう書いたらうまく検索できました。こちらはどうでしょうか? 検証ありがとうございます。 しかしながら、やりたいのがlower関数の使用なので、この手法だと以下のよう になり、先述の文字列連結のSQLとあまり変わらなくなってしまいます。 select * from test where lower(path) @@ ARRAY_TO_STRING(ARRAY[lower('"127"'),lower('"asDf2"'),lower('"Qwer3"')],'OR ') ただ、関数を使ってワンクッション置くというのが良いヒントになり、以下の SQLで実現することができました。 select * from test where lower(path) @@ format(lower('"127"%1$s"asDf2"%1$s"Qwer3"'),' OR ') これだけではGROONGAと関係ないところで終わってしまうので、当初の クエリ構文でORを小文字で指定する方法はあるか? についての質問は継続させて下さい。 方法が無いようなら、要望として 論理積や論理否定と同様、論理和記号の導入 を提案します。 ----------------------------- 高見 直輝 <takam****@orega*****> 株式会社オレガ TEL:03-3267-0150 FAX:03-3267-0180