Kentaro Hayashi
hayas****@clear*****
2017年 8月 2日 (水) 11:40:55 JST
林です。 On Mon, 31 Jul 2017 19:39:15 +0900 (JST) s400t****@yahoo***** wrote: > MLみなさん > こんにちは。 > > 1っか月+にまたpgroonga試して見ました。 > 二つ単語検索のOR条件に&@~オペレーター使おうとしていますが、エラーになります。 > > 例) target_col列の'東京'又は'大阪'をヒットさせて、一覧取得しようとしています。 > > https://pgroonga.github.io/reference/operators/query-v2.htmlの「Operator classes」のところ: > > You need to specify one of the following operator classes to use this operator:と書いていますが、Usageのところにどうやってspecifyするのか、例がないのでこの以降どうすればよいのか、わかりません。前のバージョン(@@オペレーター)の時は検索出来ていました。 > > 上記の例で、target_colの型は「text」で、そのフィールドのindexを作っています。 > (CREATE INDEX target_col _index ON db名 USING pgroonga (target_col );) ということであれば、target_col &@~ "東京 OR 大阪" を指定してください。 (前のバージョンでできていたというのはちょっとよくわからないのですが。。。) > 実行したSQL: > $stmt = $pdo->prepare("SELECT 項目1、... FROM db名 WHERE target_col &@~ :keyword1 OR :keyword2"); > > $stmt->bindValue(':keyword1', '東京'); > > $stmt->bindValue(':keyword2', '大阪'); > > $stmt->execute(); なので、上記の箇所も"東京 OR 大阪"となるように以下のようにするとよいはずです。 $stmt = $dbh->prepare("SELECT target_col FROM memos WHERE target_col &@~ :keyword"); $stmt->bindValue(':keyword', '東京 OR 大阪'); $stmt->execute(); サンプルとしては↓な感じでしょうか。 <?php $dsn = 'pgsql:dbname=pgroonga_test host=localhost port=5432'; $user = 'postgres'; $password = 'postgres'; try{ $dbh = new PDO($dsn, $user, $password); $stmt = $dbh->prepare("SELECT target_col FROM memos WHERE target_col &@~ :keyword"); $stmt->bindValue(':keyword', '東京 OR 大阪'); $stmt->execute(); while ($row = $stmt->fetch()) { var_dump($row); } } catch (PDOException $e) { print('Error:'.$e->getMessage()); die(); } ?> -- Kentaro Hayashi <hayas****@clear*****> -------------- next part -------------- $B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B... $B%U%!%$%kL>(B: $BL5$7(B $B7?(B: application/pgp-signature $B%5%$%:(B: 833 $B%P%$%H(B $B @ bL@(B: $BL5$7(B Download