【发布时间】:2009-06-24 16:39:02
【问题描述】:
我正在尝试使用 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) => 照片编号:1,地点:“Baceno”,信息:“Era immerso in erba alta。” ... % Photo.search(:all, :query => 'baceno') => []
【问题讨论】:
-
这个迁移脚本很好用,但记得在 self.down 方法中恢复顺序,在将表更改回 InnoDB 之前必须删除索引,否则会失败。
标签: mysql ruby-on-rails full-text-search