Как объединить результаты по Алголии - PullRequest
0 голосов
/ 04 января 2019

Я хотел бы иметь возможность объединять данные. Вот пример:

[ { «тип»: «ручка», "цвет синий", }, { «тип»: «стекло», "красный цвет", }, { «тип»: «ручка», "цвет": "зеленый", }, { «тип»: «стекло», "цвет": "фиолетовый", }, { «тип»: «ручка», «цвет»: «желтый», }, { «тип»: «стекло», "оранжевый цвет", } ]

Тогда, если я буду искать перо, я получу 3 результата, по одному на каждый цвет. Я хотел бы только один результат.

Я пытался использовать отличное, но отличное от Алголии больше похоже на фильтр, а не на конкат. Если я сделаю отличное для атрибута pen, я получу один результат, который может выглядеть следующим образом:

{ «тип»: «ручка», "цвет синий", },

Я хотел бы получить:

{ «тип»: «ручка», "color_list": ["blue", "green", "yellow"] },

Я не могу найти ничего подобного в документе algolia / instant-search, поэтому мне интересно, как это сделать. Есть ли реальный инструмент, который может сделать это, или, по крайней мере, хакерское решение, которое может добиться цели?

Спасибо

1 Ответ

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

Алголия не будет объединять вас, однако обычно в ваших записях хранится две информации:

  • Какого цвета эта конкретная запись представляет
  • какие другие цвета существуют для этого типа продукта

Что приводит к:

[{
  "type": "pen",
  "color": "red",
  "color_list": ["red", "blue", "green"]
},
{
  "type": "pen",
  "color": "green",
  "color_list": ["red", "blue", "green"]
},
...]

Установите color в качестве атрибута для поиска и используйте distinct для дедупликации результатов; тогда вы можете получить весьма релевантные результаты поиска, такие как «зеленое перо», которое вернет запись пера с "color": "green" (таким образом, у вас будет изображение продукта с подходящим цветом, например), но позволит вам отображать образцы цветов: все остальные доступные цвета.

Надеюсь, это поможет! Пожалуйста, прокомментируйте, если вы хотите более подробно описать ваш вариант использования:)

...