0

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 つのキーワードよりも高くなければなりません。どうやってするか?

4

0 に答える 0