MySQL/InnoDB に、次のようなインスタンス キーワードを持つ Faq クラスがあります。
apple,juice,fruit
私はクラスメソッドを持っています
def self.find_by_string string = nil
unless string.present?
return
end
keywords = string.gsub(/(\,|\.|\s)/, " ").split.uniq.join("|")
Faq.find(
:all,
:conditions => "keywords like '%" + keywords.gsub(/\|/, "%' or keywords like '%") + "%'"
)
end
find の結果を、見つかったキーワードの数で並べ替える必要があります。つまり、SQL が 4 つのキーワードを見つけた場合、結果は 3 つのキーワードよりも高くなければなりません。どうやってするか?