Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@hiroyuki-sato
Last active August 29, 2015 14:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hiroyuki-sato/dc27376668e40659a633 to your computer and use it in GitHub Desktop.
Save hiroyuki-sato/dc27376668e40659a633 to your computer and use it in GitHub Desktop.
groonga example
table_create --name Article --flags TABLE_HASH_KEY --key_type ShortText
column_create --table Article --name content --type ShortText
column_create --table Article --name title   --type ShortText
column_create --table Article --name area   --type ShortText


table_create --name ArticleIndex --flags TABLE_PAT_KEY|KEY_NORMALIZE --key_type ShortText --default_tokenizer TokenBigram
column_create --table ArticleIndex --name conent_index --flags COLUMN_INDEX|WITH_POSITION --type Article --source content
column_create --table ArticleIndex --name title_index --flags COLUMN_INDEX|WITH_POSITION --type Article --source title
column_create --table ArticleIndex --name area_index --flags COLUMN_INDEX|WITH_POSITION --type Article --source area

load --table Article
[
  {"_key":"ID1","area":"関東","content":"ロンドンからパリへ","title":"t:ロンドンからパリへ旅行"}
  {"_key":"ID2","area":"関東","content":"静かなるドン完結","title":"t:静かなるドンついに完結、全108巻"}  
  {"_key":"ID3","area":"関東","content":"ドン小西のファッションチェック","title":"t:ドン小西のファッションチェック表参道"}  
  {"_key":"ID4","area":"関東","content":"スウドン流行",title:"t:スウドン流行、うどん"}  
  {"_key":"ID5","area":"関西","content":"新そば発売",title:"t:新そば発売、天ぷらそばがオススメ"}  
  {"_key":"ID6","area":"関西","content":"ラドン温泉",title:"t:ラドン温泉で入浴"}  
  {"_key":"ID7","area":"関東","content":"あなたのそばのコンビニ",title:"t:あなたのそばのコンビニローソン"}  
  {"_key":"ID8","area":"関西","content":"京都魅力世界一で市長会見",title:"t:京都魅力世界一で市長会見"}  
]
  • 条件1: areaが関西(完全一致)
  • 条件2: titleまたはcontentに、「ドン」または「そば」を含んでいる
  • 条件3: titleまたは
  • (条件1 AND 条件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,"関西","近畿")'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment