2010-06-11 3 views
0

Представьте, что у вас есть список рецептов, в которых есть ингредиенты в виде текста.Как искать фразу с помощью логики поиска?

Вы хотите увидеть, сколько рецептов содержит «кунжутное масло».

Проблема с поиском по поисковому запросу по умолчанию с использованием Recipe.ingredients_like («кунжутное масло») заключается в том, что любой рецепт с кунжутом и маслом будет появляться, когда я ищу «кунжутное масло», что является проблемой, когда рецепт может содержат такие вещи, как «семена кунжута» + «кукурузное масло»

+0

Вы также можете быть заинтересованы в [Поиск по attribute_like_any с использованием нескольких слов в одно поле] (http://stackoverflow.com/questions/3639818/search-by-attribute-like-any-using-multiple-words-in-one-field-searchlogic) :) –

ответ

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%') 
Смежные вопросы