MySQLで基本的な全文検索を実装しようとしています。Ruby on RailsでMySQL全文検索
私はこの移行を書いた:
def self.up
execute 'ALTER TABLE photos ENGINE = MyISAM'
execute 'CREATE FULLTEXT INDEX fulltext_photos ON photos (place, info)'
end
def self.down
execute 'ALTER TABLE photos ENGINE = InnoDB'
execute 'DROP INDEX fulltext_photos ON photos'
end
そして、ここでは私のモデルです:
def self.search(*args)
options = args.extract_options!
find_by_sql [ "SELECT * FROM photos WHERE MATCH (place, info) AGAINST (?)", options[:query] ]
end
問題は、このコードは常に空の配列を返すことです。例えば
:
% Photo.find(:first) => Photo id: 1, place: "Baceno", info: "Era immerso in erba alta." ... % Photo.search(:all, :query => 'baceno') => []
この移行スクリプトは素晴らしい作品が、するself.down方法で順序を元に戻すことを忘れないでください、インデックスが戻って他のあなたが失敗を取得するのInnoDBのテーブルを変更する前に除去しなければなりません。 –