Created
August 15, 2012 07:35
-
-
Save jugyo/3357397 to your computer and use it in GitHub Desktop.
Revisions
-
jugyo revised this gist
Aug 15, 2012 . 1 changed file with 3 additions and 3 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -2,19 +2,19 @@ ## groonga のインストール $ brew install groonga ## rroonga のインストール Ruby から groonga を使うために rroonga というライブラリを使う: $ gem install rroonga ## サンプルアプリ ブログっぽいデータ構造を作ってそれを検索できるようにしてみる。 $ irb -rgroonga デフォルトの文字コードを指定: -
jugyo revised this gist
Aug 15, 2012 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -14,6 +14,8 @@ Ruby から groonga を使うために rroonga というライブラリを使う ブログっぽいデータ構造を作ってそれを検索できるようにしてみる。 irb -rgroonga デフォルトの文字コードを指定: ```ruby -
jugyo created this gist
Aug 15, 2012 .There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,76 @@ # Groonga + Ruby で全文検索 ## groonga のインストール brew install groonga ## rroonga のインストール Ruby から groonga を使うために rroonga というライブラリを使う: gem install rroonga ## サンプルアプリ ブログっぽいデータ構造を作ってそれを検索できるようにしてみる。 デフォルトの文字コードを指定: ```ruby Groonga::Context.default_options = {:encoding => :utf8} ``` データベースの作成: ```ruby Groonga::Database.create(:path => "/tmp/blog.db") ``` スキーマの定義: ```ruby Groonga::Schema.create_table("Entries") do |table| table.short_text("title") table.text("content") end ``` 全文検索用のテーブルを作成: ```ruby Groonga::Schema.create_table("Terms", type: :patricia_trie, key_normalize: true, default_tokenizer: "TokenBigram" ) do |table| table.index("Entries.content") end ``` `table.index("Entries.content")` としているところがポイント。なんか、こうするらしい。 `key_normalize: true` で大文字と小文字を区別しないように、 `default_tokenizer: "TokenBigram"` でトークナイザとしてバイグラムを指定している。 `type: :patricia_trie` というのはえーと、何だろうねぇ。 適当なデータをいくつか追加: ```ruby Groonga["Entries"].add(title: 'たのしいRuby', content: 'Rubyはたのしい') Groonga["Entries"].add(title: '今日の晩ご飯', content: '今日の晩ご飯はカレー') ```` 検索: ```ruby entries = Groonga["Entries"].select {|i| i.content =~ 'ruby'} entries.each do |entry| puts "#{entry.title}: #{entry.content}" end ```` 以下が出力されれば成功: たのしいRuby: Rubyはたのしい ## 参考 * http://groonga.org/ja/docs/index.html * http://groonga.rubyforge.org/rroonga/en/file.tutorial.html