Skip to content

Instantly share code, notes, and snippets.

@koichiro
Last active August 29, 2015 14:03
Show Gist options
  • Save koichiro/9fe98496d1e948b19eb2 to your computer and use it in GitHub Desktop.
Save koichiro/9fe98496d1e948b19eb2 to your computer and use it in GitHub Desktop.
Groonga::Schema.create_table("users") do |t|
t.integer "id"
t.short_text "uid"
t.short_text "name"
t.short_text "email"
t.short_text "real_name"
t.short_text "business_name"
t.short_text "kana_name"
t.short_text "display_name"
t.text "profile"
t.time "created_at"
end
Groonga::Schema.create_table("users_index", type: :patricia_trie, key_normalize: true, default_tokenizer: "TokenBigram") do |t|
t.index "users.uid"
t.index "users.email"
t.index "users.display_name"
t.index "users.profile"
end
Groonga::Schema.create_table("blogs") do |t|
t.integer "id"
t.short_text "subject"
t.text "content"
t.time "published_at"
end
Groonga::Schema.create_table("blogs_index", type: :patricia_trie, key_normalize: true, default_tokenizer: "TokenBigram") do |t|
t.index "blogs.subject"
t.index "blogs.content"
end
Groonga::Schema.create_table("daily_reports") do |t|
t.integer "id"
t.short_text "subject"
t.text "content"
t.time "published_at"
end
Groonga::Schema.create_table("daily_reports_index", type: :patricia_trie, key_normalize: true, default_tokenizer: "TokenBigram") do |t|
t.index "daily_reports.subject"
t.index "daily_reports.content"
end
query = "(id:@test) OR
(subject:@test) OR
(content:@test) OR
(published_at:@test)"
Groonga["blogs"].select(query)
@kou
Copy link

kou commented Jul 11, 2014

The following works well on my environment.

require "fileutils"
require "groonga"

FileUtils.rm_rf("/tmp/db")
FileUtils.mkdir_p("/tmp/db")
Groonga::Database.create(:path => "/tmp/db/db")

Groonga::Schema.create_table("users") do |t|
  t.integer "id"
  t.short_text "uid"
  t.short_text "name"
  t.short_text "email"
  t.short_text "real_name"
  t.short_text "business_name"
  t.short_text "kana_name"
  t.short_text "display_name"
  t.text "profile"
  t.time "created_at"
end

Groonga::Schema.create_table("users_index", type: :patricia_trie, key_normalize: true, default_tokenizer: "TokenBigram") do |t|
  t.index "users.uid"
  t.index "users.email"
  t.index "users.display_name"
  t.index "users.profile"
end

Groonga::Schema.create_table("blogs") do |t|
  t.integer "id"
  t.short_text "subject"
  t.text "content"
  t.time "published_at"
end

Groonga::Schema.create_table("blogs_index", type: :patricia_trie, key_normalize: true, default_tokenizer: "TokenBigram") do |t|
  t.index "blogs.subject"
  t.index "blogs.content"
end

Groonga::Schema.create_table("daily_reports") do |t|
  t.integer "id"
  t.short_text "subject"
  t.text "content"
  t.time "published_at"
end

Groonga::Schema.create_table("daily_reports_index", type: :patricia_trie, key_normalize: true, default_tokenizer: "TokenBigram") do |t|
  t.index "daily_reports.subject"
  t.index "daily_reports.content"
end

Groonga["blogs"].add(:content => "test")

query = "(id:@test) OR (subject:@test) OR (content:@test) OR (published_at:@test)"

p Groonga["blogs"].select(query).size # -> 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment