2017-02-21 3 views
4

Ich baue ein Produktsuche-Widget, das E-Commerce-Kunden in ihre Website integrieren. Sagen wir, ich habe 100 Kunden mit je 1000 Produkten.Sollte ich einen Index oder mehrere in Algolia verwenden?

Besucher auf der Website eines bestimmten Kunden können nur nach den Produkten dieses Kunden suchen.

Da Produkte exakt die gleichen Attribute (id, Name, Preis, etc ...) über Kunden teilen:

Soll ich einen separaten Index für jeden Client zu verwenden, oder einen Index aller Clients speichern Produkte und assoziieren irgendwie jedes Produkt mit einem Kunden?

Vielen Dank im Voraus.

Antwort

7

Ich würde empfehlen Ihnen dringend, einen separaten Index für jeden Client zu erstellen, da es Ihnen

  • unterschiedliche Indexkonfiguration bei Bedarf (Tippfehler-Toleranz, Synonyme)
  • getrennt Analytik
  • haben können die Möglichkeit, einen anderen API-Schlüssel zu erstellen jeder Index (siehe doc)

Was ist nicht der Fall, wenn Sie mit dem anderen Ansatz gehen.

1

Sie können nur einen Index verwenden. Verwenden Sie ein before_action :find_client Verfahren, bei dem Ihr Kunde wird von einem param wie client_id

So im privaten Bereich Ihres Controller

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

hinzufügen finden und stellen Sie sicher, dass der Benutzer nur die Produkte dieser Client sehen können. Damit dies funktioniert, müssen Sie beim Zugriff auf die Indexseite eine client_id in den Parametern übergeben.

Dann, abhängig von der Struktur Ihrer App in Ihrer Indexaktion müssen Sie die Produkte für den Client filtern. Wo der Client durch Ihre Methode find_client festgelegt wird.

Verwandte Themen