我在带有MySQL后端的rails上使用ruby。我有一个名为notes的表,这是我用来创建它的迁移:
def self.up
create_table(:notes, :options => 'ENGINE=MyISAM') do |t|
t.string :title
t.text :body
t.timestamps
end
execute "alter table notes ADD FULLTEXT(title, body)"
end
我想对标题和正文字段进行全文搜索。问题是全文搜索总是空回来。例如,如果我将此行添加到数据库中:Title: test, Body: test
。然后我运行此查询SELECT * FROM notes WHERE MATCH(title, body) AGAINST('test')
。它返回一个零集。任何人都能告诉我我做错了什么以及如何使全文搜索工作?
答案 0 :(得分:7)
我只是在这里猜测,但文档说明:
自然语言搜索解释 搜索字符串作为短语 自然的人类语言(一个短语) 自由文本)。没有什么特别的 运营商。禁用词列表适用。 另外,存在的词语 考虑50%或更多行 常见且不匹配。全文 搜索是自然语言搜索 如果是IN自然语言模式 给定修饰符或者没有修饰符 给出。
因此,如果只有一行,并且它包含'test',则'test'存在于超过50%的行中,因此不被视为匹配。也许试试:
SELECT * FROM notes WHERE MATCH(title, body) AGAINST('test' IN BOOLEAN MODE)
答案 1 :(得分:0)