Как мне найти фразу с помощью логики поиска? - PullRequest
0 голосов
/ 11 июня 2010

Представьте себе сценарий, у вас есть список рецептов, в которых ингредиенты представлены в виде текста.

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

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

1 Ответ

1 голос
/ 03 сентября 2010

Это вернет Рецепты, содержащие 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%') 
...