2017-02-21 3 views
4

Я создаю виджет поиска продукта, который клиенты электронной коммерции интегрируют на свой веб-сайт. Предположим, у меня 100 клиентов с 1000 продуктами каждый.Должен ли я использовать один индекс или несколько в Алголии?

Посетители на конкретном веб-сайте клиента могут искать товары этого клиента.

Учитывая, что продукты разделяют те же атрибуты (идентификатор, наименование, цена и т.д. ...) по клиентам:

Должен ли я использовать отдельный индекс для каждого клиента, или один индекс для хранения всех клиентов продуктов и как-то ассоциировать каждый продукт с клиентом?

Заранее спасибо.

ответ

7

Я настоятельно рекомендую вам создать отдельный индекс для каждого клиента, так как он позволяет иметь

  • разных конфигурации индекса, если это необходимо (опечатка-допуск, синонимы)
  • отделенные аналитики
  • возможность создания другого ключа API каждого индекса (см. doc)

Это не тот случай, если вы идете с другим подходом.

1

Вы можете использовать только один индекс. Используйте before_action :find_client метод, где ваш клиент найти по парам, такие как client_id

Таким образом, в частном разделе контроллера добавить

private 
def find_client 
@client = Client.find(params[:client_id]) 
end 

и убедитесь, что пользователь может видеть только продукты этого клиента. Для этого вам нужно передать client_id в параметрах при доступе к странице индекса.

Чем в зависимости от структуры вашего приложения в вашем действии индекса вам нужно отфильтровать продукты для клиента. Если клиент настроен вашим методом find_client.

Смежные вопросы