takah****@yahoo*****
takah****@yahoo*****
2015年 11月 11日 (水) 15:34:52 JST
株式会社クリアコード 須藤 様 お世話になっております。 下記の件で御座いますが、 ご回答誠に有難う御座います。 SQL一式の件、承知致しました。 またお手間取らせてしまい、申し訳御座いませんでした。 まだ、理解出来ていない部分もあるのですが、 頂きましたサイトを確認しつつ、理解の向上に努めます。 以上、引き続き何卒宜しくお願い致します。 ----- Original Message ----- > From: Kouhei Sutou <kou****@clear*****> > To: groon****@lists***** > Cc: > Date: 2015/11/11, Wed 11:59 > Subject: [groonga-dev,03649] Re: select文に関して > > 須藤です。 > > In <53122****@web30*****> > "[groonga-dev,03648] Re: select文に関して" on Wed, 11 Nov 2015 10:53:59 > +0900 (JST), > takah****@yahoo***** wrote: > >> 下記、ご連絡頂きまして誠に有難う御座いました。 >> また、既出である事、大変申し訳御座いませんでした。 > > 大丈夫です! > > (だれか、メーリングリストでのやりとりで明らかになった知見を > 参照しやすいようにまとめてくれるとうれしいです!) > >> --------------------------------------- >> ■修飾子の省略の挙動に関して >> SELECT * FROM mail00.mail >> match(subject) against('ビジネス 最大' IN BOOLEAN MODE) >> >> 上記はビジネスor最大の論理式で間違い御座いませんでしょうか。 >> また('*DOR ビジネス 最大' IN BOOLEAN MODE)と同様の挙動で >> 認識相違御座いませんでしょうか。 > > はい、その通りです。 > > ただ、↑の中で「+」を使った場合の挙動はMySQL標準の挙動(*)と > は異なるので注意してください。 > (*) http://dev.mysql.com/doc/refman/5.6/ja/fulltext-boolean.html > > 詳細は↓のスレッドを参照してください。 > https://osdn.jp/projects/groonga/lists/archive/dev/2014-October/002856.html > >> ■特殊記号に関して >> 「こんにちは こんばんわ”''()\」という文言に対して >> where match(subject) against('+"()"' IN BOOLEAN MODE) >> と書くと上手く抽出出来ず、抽出方法や >> 特殊記号にあたる文字が何であるかと、 >> 確認したく、自分の探し方が悪いのか、 >> 上手くリファレンスが探せず、 >> 特殊文字の範囲、扱いに関して、 >> URLでも構いませんので、ご教示頂ければ幸いで御座います。 > > これは特殊記号のエスケープはちゃんとできていて、問題は > TokenMecabを使っていることです。 > > ↓というようにmroonga_commandでtable_tokenizeを実行するとど > のようなトークンになるかがわかります。この場合は「''()\\」で > ひとつのトークンになっているため「''()\\」そのものでしかヒッ > トせず、「()」のように中にある一部の文字列ではヒットしません。 > > ---- > USE mysql; > DROP TABLE IF EXISTS mail; > SET NAMES utf8mb4; > CREATE TABLE mail ( > subject text, > FULLTEXT INDEX (subject) COMMENT 'tokenizer "TokenMecab"' > ) ENGINE=Mroonga DEFAULT CHARSET utf8mb4; > > SELECT mroonga_command('table_tokenize mail-subject > "こんにちは こんばんわ”\\\'\\\'\\\(\\\)\\\\" > --mode ADD'); > -- [ > -- { > -- "value": "こんにちは", > -- "position": 0, > -- "force_prefix": false > -- }, > -- { > -- "value": "こんばんわ", > -- "position": 1, > -- "force_prefix": false > -- }, > -- { > -- "value": "”", > -- "position": 2, > -- "force_prefix": false > -- }, > -- { > -- "value": "''()\\\\", > -- "position": 3, > -- "force_prefix": false > -- } > -- ] > > あらゆる部分文字列でヒットさせたい場合は前のメールに書いた > TokenRegexpを使ってください。使えるトークナイザーについては > ↓を参照してください。 > http://groonga.org/ja/docs/reference/tokenizers.html > > > なお、特殊記号については↓を参照してください。 > http://groonga.org/ja/docs/reference/grn_expr/query_syntax.html#escape > > > あと、できればでよいのですが、次からは一部のSQLやSQLの一部で > はなく、こちらでも試せるSQL一式を教えてもらえると助かります。 > (SQL一式とはこのメールや前のメールで私が提示しているような > SQLです。) > > 一部のSQLやSQLの一部だけだとこちらで動作確認をするためにSQL > 一式をこちらで作らなければならなくて面倒なのです。。。 > たぶん、手元には動作するSQL一式があるはずなので、それを提供し > てもらえればこちらで作りなおさなくてもよくなるのです。。。 > > > -- > 須藤 功平 <kou****@clear*****> > 株式会社クリアコード <http://www.clear-code.com/> > > Groongaベースの全文検索システムを総合サポート: > http://groonga.org/ja/support/ > パッチ採用 - プログラミングが楽しい人向けの採用プロセス: > http://www.clear-code.com/recruitment/ > コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ: > http://www.clear-code.com/services/code-reader/ > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.osdn.me/mailman/listinfo/groonga-dev >