2010-06-11 80 views
0

想象一下情況下,你有一份食譜作爲文本的配料列表。如何搜索使用搜索邏輯的短語?

你想知道有多少食譜含有「芝麻油」。

使用Recipe.ingredients_like(「香油」)的默認搜索searchlogic的問題是,用香油和油任何配方會來,當我搜索「香油」,這是一個問題,當配方可含有像「芝麻」 +「玉米油」

+0

您可能也有興趣[使用多個單詞attribute_like_any在一個字段搜索] (http://stackoverflow.com/questions/3639818/search-by-attribute-like-any-using-multiple-words-in-one-field-searchlogic):) – 2010-09-07 22:14:21

回答

1

這將返回包含sesame oil(由空格分隔的兩個單詞)

Recipe.ingredients_like("sesame oil") 
#=> SELECT * FROM `recipes` WHERE (recipes.ingredients LIKE '%sesame oil%') 

食譜這將返回包含sesameoil食譜的東西(這些中的任何一個字)

Recipe.ingredients_like_any("sesame", "oil") 
#=> SELECT * FROM `recipes` WHERE (recipes.ingredients LIKE '%sesame%' OR recipes.ingredients LIKE '%oil%') 

這將返回包含sesameoil(以任意順序兩個單詞)食譜

Recipe.ingredients_like_all("sesame", "oil") 
#=> SELECT * FROM `recipes` WHERE (recipes.ingredients LIKE '%sesame%' AND recipes.ingredients LIKE '%oil%')