如何使用搜索逻辑搜索短语?

时间:2010-06-11 03:47:23

标签: ruby-on-rails ruby searchlogic

想象一下案例场景,你有一份食谱列表,其中包含成分作为文本。

你想看看有多少食谱含有“芝麻油”。

使用Recipe.ingredients_like(“芝麻油”)进行默认搜索逻辑搜索的问题是,当我搜索“芝麻油”时会出现任何芝麻和油的配方,这可能是一个问题像“芝麻”+“玉米油”这样的东西

1 个答案:

答案 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%')