Работая над некоторыми поисковыми запросами, используя searchkick, и не могу понять, как настроить поиск searchkick, чтобы получить нужные мне результаты. Таким образом, пользователи могут сохранять рецепты, а с рецептами связаны теги. Я хочу получить все теги из их сохраненных рецептов и искать рецепты с одинаковыми тегами и взвешивать теги в зависимости от того, сколько раз они появляются.
Таким образом, чтобы получить теги, я могу сделать это:
tags = Tagging.where(taggable_id: current_user.saved_recipes.pluck(:recipe_id)).group(:tag_id).count
Это возвращает что-то вроде этого:
{23=>1, 56=>1, 27=>2, 30=>1, 28=>1, 36=>1, 39=>1, 16=>1}
Я просто не уверен, как передать этот массив для взвешивания чисел, поэтому в этом случае тег 27 будет иметь больший вес, чем остальные. Поле, которое я ищу в моем индексе эластичного поиска, это: теги.
Recipe.search "*", where: [tags: tag]
Это то, о чем я думал, но хэш тегов имеет эти цифры и не уверен, как сделать так, чтобы это повысило результаты. Надеюсь, это ясно