Ich versuche herauszufinden, ob es eine performante Möglichkeit gibt, meine aktuellen Datenstrukturen zu durchsuchen, oder wenn ich sie neu strukturieren muss.Durchsuchen von verwandten Indizes auf Algolia
Ich habe die folgende Struktur für meinen Indizes:
- Publikation (Attribute:
id
,title
,keywords
) - PublicationFile (Attribute:
id
,publication_id
,text
,page_number
)
Eine Veröffentlichung hat viele Veröffentlichungsdateien, eine Veröffentlichungsdatei enthält den Inhalt der Datei und die Seite, für die sie bestimmt war nd in (text
und page_number
).
title
, keywords
und text
sind die durchsuchbaren Attribute, wenn also jemand nach 'economy' sucht, möchte ich beide Indizes durchsuchen.
Ich möchte eine Suche durchzuführen, die beiden Indizes durchsucht und gibt die Ergebnisse in einer Weise, die mir so etwas zu tun erlaubt:
Publication1 keyword1 keyword2 Found results in Publication1's file contents in: [file a (pages: 1, 2, 3), file b (pages: 5)]
Deshalb möchte ich Art der Suche, was geschieht, um Ergebnisse zurückzugeben, die nach der ID einer Publikation gruppiert sind. Die einzige Möglichkeit, an die ich jetzt denken kann, besteht darin, beide Indizes zu durchsuchen und dann die Ergebnisse zu durchlaufen und die Übereinstimmungen zwischen Datei und Seite mit einer Veröffentlichung zu verknüpfen.
Zusammenfassend meine Fragen sind:
- Gibt es eine Weise, die ich meine Datenstruktur können die verschachtelten Schleifen zu vermeiden, sie zu verarbeiten?
- Gibt es eine Möglichkeit, dies durch Algolia zu tun, ohne meine Struktur ändern zu müssen? Ich würde im Idealfall wollen Algolia Frontend Suchcode und vermeiden Verarbeitung dieser Daten auf meinem Backend.
Vielen Dank! das hilft wirklich, ich muss nur einen Weg finden, um die Daten jetzt unter 10 KB pro Datensatz zu halten. –
Eigentlich würde ich noch einmal über mein Backend gehen müssen, um die Daten in der gleichen Struktur wie das Beispiel in meiner Frage zu verarbeiten, oder? Es scheint also keine Möglichkeit zu geben, diesen Teil zu vermeiden, aber wie würde ich dann die Daten paginieren, wenn ich sie verarbeite? Ich möchte, dass in meinen Suchergebnissen Publikationen angezeigt werden und die Dateinamen/Seitenzahlen, in denen die Ergebnisse gefunden wurden. Das Hauptelement des Ergebnisses ist die Veröffentlichung, wobei die Dateiübereinstimmungen als Unterelemente behandelt werden. –
Ich habe nicht gefunden, um genau das zu bekommen, was ich wollte, aber das Deduplizieren mit der Datei-ID hat es mir ermöglicht, Treffer entweder als Publikation oder als Datei anzuzeigen. Ich habe sie auch in einen Index eingefügt, der dem von Ihnen verlinkten Blogpost ähnlich ist. Ich habe 'record_type' und' record_priority' verwendet, um die Ergebnisse so zu sortieren, dass sie für meinen Anwendungsfall sinnvoll sind. Ich habe nicht genau das bekommen, was ich von deiner Antwort benötigt habe (und wie du gesagt hast, es scheint noch nicht möglich zu sein), aber deine Antwort war der beste Kompromiss in meinem Fall. Danke vielmals. –