groonga
とあるシステムで数年前にmroongaで実装した部分を再度実行しようとしたところ、エラーを吐いてmigrateすらできなくなりました。 実際のところ とあるモデル(Hoges)の検索画面でエラーを吐きました。 == UseMroongaInEntriesTable: migrating ==============…
mroongaで論理積・論理和の検索条件を扱う - Bye Bye Mooreではmroonga_commandを使う方法を採用しました。 今回はMySQLの全文検索方式に倣ってBoolean modeによる論理積を実装してみます。当該modelの末尾あたりに scope :search_with, ->(name) { where(%Q…
5/20追記:mroonga_command以外のバージョンも作りました mroongaで論理積・論理和の検索条件を扱う(Boolean mode編) - Bye Bye Moore 前回に引き続きmroongaの検索条件について。 前方一致(??) 本来なら、その言葉から始まる言葉に一致するのですが... …
mroongaで論理を扱う場合、mroonga_commandでラッピングしてしまうのが手っ取りバ早そうです。 ...もっとスマートな方法をご存知の方はお気軽にトマホークを御投擲下さい(震え声 AND(論理積)検索 両方一致のAND検索 mysql> select mroonga_command("select …
たとえば、検索エンジンにmroongaを追加したい場合は 既存のdb/migrationの当該ファイルにoptions: "ENGINE = mroonga"を追加します class CreateProfessors < ActiveRecord::Migration def change create_table :professors ,options: "ENGINE = mroonga" d…
二日連続でgroongaの失敗記事です( mysql> select mroonga_command("tokenize TokenMecab 'alpha'"); とやって ERROR1123(HY000) failed to open database: syscall error Can't initialize function 'mroonga_command' 等々が出たら、エンジンを正常にmroo…
groonga導入済の環境で、mroongaをmecab付きで導入しようとしたところ、ダメっぽい感じでした。 $ groonga > register normalizers/mysql [[-3,1399468383.43181,0.00655889511108398,"cannot find plugin file: </usr/local/Cellar/groonga/4.0.1/lib/groonga/plugins/normalizers/mysql.so>",[["grn_plugin_register","plugin.c",507]]…
既存のrailsプロジェクトにgroongaを追加する方法です。 今回はprofessorsというモデルのnameカラムに対して全文検索をかけるシステムを想定しています。 gem 'rroonga' と追記し $ bundle installして導入します。 コンパイルが入るので若干時間が掛かりま…
Groonga自体もSqliteよろしく気軽に扱えるDBです。 ただ、既に動いてるシステムだとか本気で巨大なデータを扱う時にはやっぱり単体では厳しい局面もあります。 そこで登場するのがMroonga! なんとMySQL...そして今をトキメクMariaDBまで扱える拡張です。 コ…
前回の続きです。 sewellはジゴクめいたRroonga検索クエリを綺麗に処理してくれるgemです。 クエリの生成法 文字列から Sewell.generate('foo AND bar -fizz', ['buzz']) #=> ( buzz@:foo ) + ( buzz@:bar) - ( buzz@:fizz ) Sewell.generate('hoge' ['ramen…
rroongaの全文検索条件を記述する方法は大きく分けて二種類あります。まずは、Ruby式にblockとregrepの活用。 これは前回の記事で扱いました。 Groonga['bookmarks'].select{|x| x.word =~ "buta"} 他のものは、クエリ形式があります。 引数として渡すので、…