Может ли кто-нибудь дать совет по следующему, пожалуйста?
Я использую searchkick/elasticsearch и хочу найти ключевой термин или термины в нескольких полях (имя, производитель). Так, например, если я ищу продукт под названием «мой продукт», созданный моим «каким-то производителем», я ожидаю, что этот результат появится, если я ищу «мой продукт», «какой-то производитель» или «мой продукт какой-то производитель», поскольку оба эти термина включены либо в полях имени или производителя.
Моя проблема заключается в следующем:
@products = Product.search query
Разрешает все условия поиска, перечисленные выше, и возвращает ожидаемый результат, однако, как только я добавляю
@products = Product.search query, fields: [:name, :manufacturer_name]
Он вернет результат только для "myproduct" или "somecompany", но не "myproduct somecompany".
Теперь это не имеет большого значения, так как я могу полностью удалить опцию полей, НО мне нужно использовать searchkicks word_start для поля имени. Итак, мой последний запрос выглядит примерно так:
@products = Product.search query, fields: [{name: :word_start}, :manufacturer_name]
Я бы хотел, чтобы пользователи искали первую строку продукта и могли также вводить производителя, например, «myprod somecompany», к сожалению, это возвращает нулевые результаты, когда я надеялся, что он вернет продукт с именем myproduct, сделанный какой-то компанией.
Я пропустил что-то действительно очевидное здесь? я могу изменить добавить
operator: 'or'
но на самом деле я хочу иметь возможность частичного поиска по имени, добавлять дополнительные термины, и если оба присутствуют для конкретной записи, она возвращается.
вот мой код модели также
class Product < ActiveRecord::Base
searchkick word_start: [:name]
end
Спасибо