想象一下案例场景,你有一份食谱列表,其中包含成分作为文本。
你想看看有多少食谱含有“芝麻油”。
使用Recipe.ingredients_like(“芝麻油”)进行默认搜索逻辑搜索的问题是,当我搜索“芝麻油”时会出现任何芝麻和油的配方,这可能是一个问题像“芝麻”+“玉米油”这样的东西
答案 0 :(得分:1)
这将返回包含sesame oil
的食谱(两个单词以空格分隔)
Recipe.ingredients_like("sesame oil")
#=> SELECT * FROM `recipes` WHERE (recipes.ingredients LIKE '%sesame oil%')
这将返回包含sesame
或 oil
(其中任何一个单词)的食谱
Recipe.ingredients_like_any("sesame", "oil")
#=> SELECT * FROM `recipes` WHERE (recipes.ingredients LIKE '%sesame%' OR recipes.ingredients LIKE '%oil%')
这将返回包含sesame
和 oil
的食谱(任何顺序的两个单词)
Recipe.ingredients_like_all("sesame", "oil")
#=> SELECT * FROM `recipes` WHERE (recipes.ingredients LIKE '%sesame%' AND recipes.ingredients LIKE '%oil%')