[groonga-dev,03352] match_columnsとfilterの使い方

Back to archive index

Hiroyuki Sato hiroy****@gmail*****
2015年 7月 8日 (水) 22:19:09 JST


佐藤です。

match_columnsとfilterの使い方について教えて下さい。

次の三つのクエリは同じ意味と考えてよいでしょうか?
結果は一緒なので大丈夫だと思うのですが念のため確認したいです。
(重みのことは考慮していません。)

最初の方法はデータを作るのが面倒なので、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,"関西","近畿")'

よろしくお願いします。


-- 
Hiroyuki Sato



groonga-dev メーリングリストの案内
Back to archive index