You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
このエントリでは Ruby on Rails と MySQL を使って日本語の全文検索を行う方法を記述する。Ruby on Rails のバージョンは 2.0.2、MySQL のバージョンは 5.0.67、Tritonn のバージョンは 1.0.12、Hyper Estraier のバージョンは 1.4.10 を使用した。サンプルの文章データとして、あらゆる日本人にとって極めて身近な著作権切れ文章である『ドグラ・マグラ』と『黒死館殺人事件』を利用した。処理のために整形したデータは本エントリに添付しておく。またデータベースへアクセスするコードではマイグレーションを除きできるだけベンチマークを取るようにし、その結果は本エントリの最後に記載する。 ページネーション Rails でページネーションを実現する will_paginate という plugin は ActiveRecord に標準でつ
はまった。まじではまった。 RailsでMySQL使うときはMySQLアダプタ(ドライバ?)が必要だけど、これRuby版であれば問題ないんだが、 C版だとbigintの値(厳密には、integerを超える値)が強制的にintegerに変換されてしまう。 どういう場面かというと、DBに新しい行をINSERTした後、モデル経由でidを取得する場合。 ※ちなみにidは当然auto_increment #idは、11111111111111111のbigint。 @model.save @model.id => -2074054200ええ!! 当然C版のほうが圧倒的に早いから使うんだけど、これだと使えない。 いろいろ調べてみた。 http://d.hatena.ne.jp/ryu00026/20070320/1174412910 こればっちり。いやー非常にたすかった。 ただし、Rails2系の場合
idとかの AUTO_INCREMENTのカラムをbigintで使用している時、特に32bitを超える数値の時(自分のPCは32bitマシン)は明らかに挙動がおかしい。 例えば id bigint title text body text というテーブルがあり alter table posts auto_increment = 100000000000000;と設定し post = Post.new post.title = "aaa" post.body = "bbb" post.save!とした場合、MySQL C API の関数 mysql_insert_id()を実行します。 この関数は、直近の INSERT クエリにより AUTO_INCREMENT カラム用に生成さ れたIDを取得します。が、mysql_insert_id() の返り値の型を long 型に変換します。 AU
前回MySQL+Sennaを簡単に扱えるプラグインを作って公開するとか言っておきながら忙しくて放置してました^^; このまま放置しようかと一瞬思ったのですが、はてなスターも付いてることだし、折角なので公開します なお、全文検索クエリを簡単に使うことを目的としているため、細かくSenna演算子をつかったり、適合率でソートはできません^^; インストール ※githubに引っ越しました script/plugin install http://ryu.rubyforge.org/svn/acts_as_tritonn git clone git://github.com/ryu00026/acts_as_tritonn.git 使い方ですが、 class Post < ActiveRecord::Base acts_as_tritonn end 普通の検索 Model.find_fulltex
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く