Searchkick Агрегация ИЛИ - PullRequest
       7

Searchkick Агрегация ИЛИ

0 голосов
/ 09 января 2019

Я использую Searchkick для поиска товаров. Работает отлично, но теперь я добавляю фильтры. Из-за характера продуктов, которые я всегда хочу показывать для выбранного фильтра, вместо использования AND всегда нужно использовать OR.

Я строю поиск как:

    Product.search(
          "shower",
          fields: [:name]
          where: {showers_ids: [46,41], accessories_ids: [104, 102]},
          aggs: [: showers_ids, : accessories_ids, : bath_ids]
    )

Это попытка запроса:

, где IN (46 ИЛИ 41) И (104 ИЛИ 102)

Это никогда не вернет ни одного товара, так как товары находятся только в одной категории. Но я бы хотел показать товары из всех категорий, поэтому он должен выглядеть примерно так:

, где IN (46 ИЛИ 41) ИЛИ (104 ИЛИ 102)

1 Ответ

0 голосов
/ 10 января 2019

Вы должны достичь желаемого результата, используя параметр or_ в предложении where. Есть пример этого в документах Searchkick , но для вашего конкретного сценария должно работать следующее:

Product.search(
  "shower",
  fields: [:name],
  aggs:   [:showers_ids, :accessories_ids, :bath_ids],
  where:  {
            _or: [
                   {showers_ids:     [46, 41]},
                   {accessories_ids: [104, 102]}
                 ]
          }
)
...