Kouhei Sutou
kou****@clear*****
2015年 7月 8日 (水) 23:12:57 JST
須藤です。 In <CA+Tq****@mail*****> "[groonga-dev,03352] match_columnsとfilterの使い方" on Wed, 8 Jul 2015 22:19:09 +0900, Hiroyuki Sato <hiroy****@gmail*****> wrote: > match_columnsとfilterの使い方について教えて下さい。 > > 次の三つのクエリは同じ意味と考えてよいでしょうか? はい!同じ意味です! (3つめには「area:近畿」相当も入っていますが、今回のデータに は「近畿」はないので実質同じです。) > 結果は一緒なので大丈夫だと思うのですが念のため確認したいです。 > (重みのことは考慮していません。) > > 最初の方法はデータを作るのが面倒なので、invaluesかmatch_columnsをうまく使い方といたいと思っています。 > > 確認したかったのは次の点です。 > * match_columns指定時に'area:関西'と書くと全部検索の対象にはならず指定したカラムを検索する はい、その通りです。 > * queryとfilterを同時に指定した場合は条件は(queryの条件 AND filterの条件)となる これもその通りです。 > 下記で意図しているクエリは次のとおりです。 > https://gist.github.com/hiroyuki-sato/dc27376668e40659a633 > > * 条件1: areaが関西(完全一致) > * 条件2: titleまたはcontentに、「ドン」または「そば」を含んでいる > * 条件3: titleまたはcontentに、「小西」または「うどん」を含まない > * (条件1 + 条件2 ) - 条件3 > > 明示的に値を指定 > > select --table Article --query '( area:関西 + ( content:@ドン OR > title:@ドン OR title:そば OR content:@そば)) - ( content:@小西 OR title:@小西 OR > content:@うどん OR title:@うどん)' > > match_columnsを使って全文検索するカラムを指定 > > select --match_columns 'title,content' --table Article --query '( > area:関西 + ( ドン OR そば )) - ( 小西 OR うどん )' > > in_valuesで完全一致するカラムを指定 > > select --match_columns 'title,content' --table Article --query '( ドン > OR そば ) - ( 小西 OR うどん )' --filter 'in_values(area,"関西","近畿")'