Kouhei Sutou
kou****@clear*****
2012年 5月 2日 (水) 18:19:52 JST
須藤です。 In <20120****@gmo-m*****> "[groonga-dev,00804] 特定の文字の組み合わせでParseError" on Tue, 01 May 2012 18:57:20 +0900, 河野 隆志 <takas****@gmo-m*****> wrote: > ´と▽と`を一文字ずつ個別に検索してみるとmroonga、tritonn双方とも > 同じ結果が返ってきますが、´▽`を並べると駄目なようです。 トークナイズのしかたが違うような気がしますが。。。 (ないとは思いますが、)念のため、mroongaのパーサーを TokenMecabなどに変更していないか確認してもらえますか? あと、もし可能であれば、Tritonnでヒットするがmroongaではヒッ トしないテキスト(検索クエリ「´▽`」の方ではなく、この検索 クエリにヒットしたレコードのテキスト)をいくつか教えてもらえ ないでしょうか? > 問題のクエリ2 > mroongal> SELECT * FROM hogehoge WHERE MATCH (text) AGAINST ('*D+ ´ ▽ `)' IN BOOLEAN MODE) ORDER BY cdate DESC LIMIT 1; > ERROR 1064 (42000): failed to parse fulltext search keyword: <*D+ ´ ▽ `)>: <Syntax error! (´ ▽ `))> > > tritonnでは実行可能で、結果も返ってきます。 mroongaではTritonnよりもエラー処理をしっかりやるようになって いるため、↑のような閉じカッコ「)」だけで開きカッコがない場 合などでエラーがでるようになっています。(Tritonnの場合はそ こで解析を終了し、閉じカッコの前まで「´ ▽ `」がクエリ文字 列として扱われているようにみえる。Sennaのソースコードより。) この場合はmroongaの場合でもTritonnの場合でも「"´ ▽ `)"」と いうようにダブルクォートで囲むのが正しいです。で、気になるの はダブルクォート自身を入れたいときだと思いますが、その場合は 「\"」というようにバックスラッシュでエスケープしてください。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) groongaサポート: http://groonga.org/ja/support/ プログラミングが好きなソフトウェア開発者を募集中: http://www.clear-code.com/recruitment/