須藤です。 pgroonga_query_escape() https://pgroonga.github.io/ja/reference/functions/pgroonga-query-escape.html を使うと特殊な文字をエスケープできます。 アプリケーションで独自にやると漏れがでることが多いので可能な らPGroongaが提供している機能を使った方がよいです。 In <89144****@yahoo*****> "Re: [groonga-dev,04716] Re: ハイフン始まりの文字列で検索すると全件ヒットする" on Thu, 6 Dec 2018 13:33:30 +0900, 川上 <hakuh****@yahoo*****> wrote: > 川上です > > > あー、そうなのですね。。 > > 認識不足でした、ありがとうございます。 > > > 現状、半角スペースによるAND検索や、「OR」を使用してのOR検索を実現して > いるので、 > > &@~ のままでいこうかとおもいます。 > > > ハイフン始まりやプラス始まりの場合は、ハイフンやプラスを削除することで > 乗り切ろうかと思います。 > > > 以上、よろしくお願いします。 > > > On 2018/12/06 9:57, Kouhei Sutou wrote: >> 須藤です。 >> >> In <8e319****@yahoo*****> >> "[groonga-dev,04715] ハイフン始まりの文字列で検索すると全件ヒットする" >> on Wed, 5 Dec 2018 22:03:45 +0900, >> 川上 <hakuh****@yahoo*****> wrote: >> >>> PGroonga2.1.6を使っているのですが、ハイフン始まりの文字列で検索すると >>> 全件ヒットするような挙動になります。 >>> ハイフン始まりの場合は何か特別な挙動を行うのでしょうか? >> ハイフンは「それ以外」を表します。 >> >> http://groonga.org/ja/docs/reference/grn_expr/query_syntax.html#logical-not >> >> なので、'-333333333'は「333333333」以外にマッチします。今回 >> のケースでは「333333333」ではなにもマッチしないということな >> ので、'-333333333'はすべてマッチするということになります。 >> >>> また、他にも似たような挙動をする記号等はあるのでしょうか? >> ↑のURLのページ内にありますが、「+」や「OR」や「スペース」も >> 特別な挙動をします。そういうもろもろが必要ないのであれば&@~ >> ではなく&@を使う方がよいです。&@は指定したキーワードそのもの >> で全文検索します。ただし、ANDやORやNOTなどは使えません。 >> >>