Erweiterte Suche und komplexes Filtern mit Solr Streaming Expressions bei Fitch Solutions

Streaming-Ausdrücke zur gleichzeitigen Durchführung von Textsuche, numerischen Bereichsfiltern und alphanumerischen Bereichsfiltern in verschiedenen Datensätzen.
Die von Solr betriebene Fusion-Plattform ist unsere primäre Schnittstelle für die Suche nach verschiedenen Arten von Inhalten in unserem Flaggschiffprodukt Fitch Connect. Einige Inhaltstypen sind direkt durchsuchbar, andere sind jedoch durch Filterung und Drilldown der Daten verfügbar. Die Komplexität unserer Daten erfordert es, dass wir die Inhalte in verschiedenen Sammlungen in Solr speichern. In dieser Sitzung wird ein Anwendungsfall behandelt, bei dem es um die Implementierung von Streaming Expressions geht. Wir werden die Leistungsfähigkeit von Streaming Expressions bei der Handhabung komplexer Datenstrukturen aufzeigen und zeigen, wie wir damit eine Textsuche, numerische Bereichsfilter und alphanumerische Bereichsfilter gleichzeitig in verschiedenen Datensätzen durchführen können. Wir werden auch die Lösung vorstellen, die wir entwickelt haben, um die Abfrageleistung durch einen hybriden Ansatz mit Streaming Expressions und Fusion-Abfragepipelines zu verbessern. Wir werden Anwendungsfälle für Streaming-Quellen und die Implementierung von Streaming-Dekoratoren behandeln.
Referenten:
Weiling Su, Sr. Software Engineer, Fitch Solutions
Prem Prakash, Technical Lead, Fitch Solutions
Zielgruppe:
Diese Sitzung ist hilfreich für Solr-Entwickler und -Architekten. Wenn Sie mit komplexen Datenstrukturen in Solr arbeiten und nach einer Lösung suchen, wie Sie die Daten abfragen und filtern können, sollten Sie diese Sitzung nicht verpassen!
Teilnehmer:
In dieser Sitzung lernen die Teilnehmer, wie man Abfragen mit Streaming Expression unter Einbeziehung komplexer Datenstrukturen und Joins implementiert. Wir werden verschiedene Streaming Expression Funktionen und die Integration von Streaming Expression mit Fusion behandeln.
Abschrift
Prem Prakash: Hallo und guten Tag zusammen. Willkommen zu unserer Sitzung über die erweiterte Suche mit Solr Streaming Expressions.
Die Sitzung wird von mir selbst präsentiert. Ich bin Prem Prakash, ein technischer Leiter bei Fitch Solutions, der an einer Suchplattform arbeitet.
Ich werde auch mit meiner Kollegin Weiling Su sprechen. Weiling ist Senior Developer bei Fitch Solutions und unsere interne Solr- und Fusion-Expertin.
Wir beginnen mit einer kurzen Einführung in unser Unternehmen. Fitch Solutions ist Teil der Fitch-Gruppe. Wir bieten integrierte Lösungen und Makro-Intelligenz, die unseren Kunden helfen, ihr Kontrahentenrisiko zu verwalten. Wir bieten Einblicke und Fachwissen über die Kreditmärkte und bieten verschiedene Lösungen über unser Flaggschiffprodukt namens Fitch Connect an, das unseren Kunden hilft, fundiertere Entscheidungen zu treffen.
Wenn Sie mehr über Fitch Solutions erfahren möchten, besuchen Sie bitte unsere Website www.fitchsolutions.com.
Wenn Sie die Produkte und Lösungen von Fitch Solutions kennenlernen möchten, können Sie sich selbst unter login.fitchconnect.com/register registrieren.
Kommen wir nun zu unserer Tagesordnung für die heutige Sitzung.
- Wir werden über die Anforderungen und die Problemstellung sprechen, die uns dazu veranlasst haben, die Streaming-Ausdrücke zu verwenden.
- Anschließend stellen wir Ihnen verschiedene Lösungsansätze vor, die wir auf dem Weg dorthin bewertet haben.
- Als nächstes werden wir über die Streaming-Ausdrücke und die dort verfügbaren Funktionen sprechen.
- Wir werden Sie dann durch die Abfragen und Ergebnisse führen.
- Wir zeigen Ihnen in einer kurzen Demo, wie wir Streaming Expressions bei uns implementiert haben.
- Als nächstes zeigen wir Ihnen einige Anpassungen der Paginierung, die wir vornehmen mussten, um unsere Anforderungen zu erfüllen.
- Wir geben Ihnen auch einen Einblick in bestimmte Leistungsoptimierungen, die wir vorgenommen haben.
- Und schließlich werden wir Ihre Fragen beantworten.
So sieht also unsere Suchseite aus. Oben finden Sie Datenelemente auswählen. Wir haben auch verschiedene Filterkategorien, wie Sektor, Geografie, Finanzen und Kredit. Sektor, Geografie und Kredit bieten auswählbare Filter, während wir für unsere Finanzdaten auch numerische Filter anbieten.
Sobald die Filter angewendet wurden, erhalten wir die Ergebnisse im Bereich „Ergebnisse verwalten“.
Wenn wir uns die Filteroptionen genauer ansehen, die uns zur Verfügung stehen, haben wir Entitätsfilter, mit denen wir eine Stichwortsuche durchführen können. Wir können nach einem Unternehmen anhand seines Namens suchen und diesen als Filter anwenden. Wir haben auch die Möglichkeit, die Unternehmen nach Regionen und nach einem bestimmten Marktsektor zu filtern.
Mit dem Rating-Filter können wir verschiedene Rating-Optionen mehrfach auswählen. Wir haben auch einige Filter innerhalb der Ratings, um Rating-Aktionen, Rating-Beobachter und Rating-Ausblicke über den Rating-Filter hinaus anzuwenden.
Sobald wir ein Finanzfeld auswählen, erhalten wir die Möglichkeit, einen Bereichsfilter in Form von oben, unten und zwischen auszuwählen und den Finanzfilter anzuwenden, indem wir die Werte in das Textfeld hier eingeben.
Dies sind die Optionen, die wir unseren Nutzern zum Filtern der Daten zur Verfügung stellen.
Wenn wir uns nun die Datenstruktur hier ansehen, werden unsere Daten in drei verschiedenen Sammlungen gespeichert. Eine ist für die Entitätsdaten, eine weitere für die Ratings und die dritte für die Finanzdaten. Die Entitäts- und Ratingdaten sind durch die Entitäts-ID verbunden und alle drei Sammlungen sind durch die Agent-ID verbunden.
Unsere Anforderung ist nun, die Daten aus diesen drei Sammlungen zusammenzuführen und darüber hinaus eine Stichwortsuche durchzuführen, Ihren Textfilter anzuwenden und numerische Bereichsfilter für die Finanzdaten anzuwenden, und wir möchten auch die Möglichkeit haben, die historischen Daten abzurufen.
Hier sehen Sie, wie die Daten aussehen. Wenn Sie die Bewertungen der Unternehmen und die Finanzdaten sehen, werden sie alle durch die Agent-ID verbunden. Die Entitäts-ID wird hier austauschbar mit der Agenten-ID in der Finanzsammlung verwendet.
Wie Sie sehen, werden die Entitäts- und die Bewertungssammlung jetzt durch die Entitäts-ID verbunden.
Unsere Aufgabe ist es nun, alle Daten, die in diesen drei Sammlungen vorhanden sind, mit einer einzigen Abfrage abzurufen.
Okay, wie lösen wir also dieses Problem? Bevor wir das Problem gelöst haben, haben wir auch die Möglichkeit in Betracht gezogen, alle Daten in einer einzigen Sammlung zu speichern. Angesichts der Komplexität der Datenstruktur und der Art der uns zur Verfügung stehenden historischen Daten war dies jedoch keine Option für uns.
Welchen Vorteil bietet es, die Daten in einer eigenen Sammlung zu speichern? Zuallererst ist die Datenstruktur auf diese Weise recht einfach und leicht zu handhaben. Sie bietet eine bessere Isolierung der Daten und das Abrufen nur eines bestimmten Datensatzes wird durch die Isolierung einfacher.
Es gibt viele Anforderungen, bei denen wir nur einen bestimmten Datensatz auf verschiedenen Bildschirmen anzeigen müssen.
Auch die Datenaktualisierung kann ganz einfach gehandhabt werden, da verschiedene Datensätze aus unterschiedlichen Quellen stammen können.
Insgesamt haben wir festgestellt, dass die Pflege der Daten viel einfacher ist, wenn wir die Daten in einer eigenen Sammlung speichern.
Um unser Problem zu lösen, haben wir mehrere Ansätze ausprobiert, die Solr Data Join unterstützen. Wir haben uns verschiedene Optionen angesehen, wie Solr Join Query und Sub Query, Solr Parallel SQL, Fusion SQL und so weiter.
Wir haben verschiedene Parameter miteinander verglichen, die hier aufgeführt sind. Wir haben uns angesehen, ob die Unterstützung zusammenpasst, was unsere Grundvoraussetzung ist.
Gibt es eine Begrenzung für die Anzahl der Sammlungen, an denen wir teilnehmen können?
Wir wollten in Zukunft auch die Möglichkeit haben, mehr als drei Sammlungen zu verbinden.
Wir haben uns auch angeschaut, ob wir auf beiden Seiten der Verknüpfung Filter anwenden können, ob sie die Suche nach Schlüsselwörtern, Sortierung, Gruppierung und Paginierung unterstützen und ob sie die Anwendung von Anpassungen auf die Funktionen erlauben.
Die Unterstützung der Paginierung war eine unserer wichtigsten Anforderungen. Die Paginierung ist hier als „vielleicht“ aufgeführt. Wir werden die Implementierung der Paginierung mit den Streaming-Ausdrücken in unseren zukünftigen Folien behandeln.
Auf der Grundlage unserer Analyse erwies sich Streaming Expression als klare Wahl für uns, die alle unsere Probleme beim Abrufen der Daten aus verschiedenen Sammlungen löste.
Was sind die Vorteile der Verwendung von Streaming Expressions? Es handelt sich um eine leistungsstarke Sprache für die Verarbeitung von Datenströmen und bietet eine Vielzahl von Funktionen zur Durchführung verschiedener Operationen. Sie verfügt über eine große, wachsende Bibliothek und eine gute Community-Unterstützung. Eine solche Community-Unterstützung war für uns sehr nützlich, aber darüber werden wir in unseren zukünftigen Folien mehr berichten.
Zu den Streaming-Ausdrücken gibt es drei verschiedene Arten von Funktionen: Stream-Quellen, Stream-Dekoratoren und Stream-Auswerter. Die Stream-Quellen stammen aus den Streams.
Die am häufigsten verwendete Funktion ist search, die eine Abfrage in der Solr-Sammlung durchführt. Andere verfügbare Funktionen sind tuple, facet, topic und so weiter. Stream-Dekoratoren umhüllen andere Stream-Funktionen oder führen Operationen mit Streams durch.
Die hier verfügbaren Funktionen sind: select, sort, top, innerJoin, usw.
Die Stream-Auswerter unterscheiden sich von den Stream-Quellen oder den Stream-Dekoratoren. Sowohl Stream-Quellen als auch Stream-Dekoratoren geben die Streams von Tupeln zurück. Tupel sind nichts anderes als eine Reihe von Daten, die von Solr abgerufen werden. Die Stream-Evaluatoren sind eher wie eine herkömmliche Funktion, die Experimentatoren auswertet und ein Ergebnis zurückgibt.
Die meisten der hier aufgeführten Funktionen sind selbsterklärend. Weitere Details finden Sie in den Referenzhandbüchern in der Solr-Dokumentation.
Damit übergebe ich das Wort an Weiling, der uns mit den nächsten Folien durch einen Anwendungsfall des Streaming-Ausdrucks führen wird.
Ich danke Ihnen.
Weiling Su: Vielen Dank, Prem. Mein Name ist Weiling, ein Senior Search Engineer und Fusion Admin bei Fitch Solutions. Ich habe mit Solr gearbeitet und verfolge es seit Solr 1.4. Wir werden mit Ihnen einen Anwendungsfall durchgehen, um zu verstehen, wie Streaming Expression implementiert wird, um Fitch Solutions bei der einen Suchanforderung zu unterstützen.
Eine der Suchanfragen sieht zum Beispiel so aus: Bitte finden Sie ein Unternehmen, dessen Name mit der Bank übereinstimmt. Sein finanzielles Gesamtvermögen in der Bank ist größer oder gleich 2,0 Millionen, und der Ratingtyp ist Long Term Issue Default Rating, und seine Ratingwerte sind A minus, A, A plus, AA, AA plus und AAA. Für die Ausgabe möchten wir nach dem Namen des Unternehmens in aufsteigender Reihenfolge sortieren. Der Offset beginnt bei Null und die Seitengröße ist gleich 25.
Schauen wir uns den Entitätsdatenspeicher in einer Kernsammlung an. Wir verwenden eine Suchfunktion, um die passenden Tupel aus der Solr-Kernsammlung herauszufiltern. Ein Tupel ist ein Streaming-Datenadmin, der aus einer Kombination aus den Rohdaten der Datenwerte und dem Zeitstempel besteht.
In der Kernsammlung wenden wir die Pick-Suche auf entityName_t mit Bank an. Fügen Sie Filterbedingungen hinzu, indem Sie Inhaltstyp gleich Entität angeben. Für die Sortieroption können wir eine beliebige Sortierung auf jedes Ihrer Rückgabefelder anwenden.
Da unser nächster Schritt die Durchführung von Joins ist, müssen wir für die Join-Operation beide Join-Streams im gleichen Sortierfeldtyp und in der gleichen Sortierreihenfolge durchführen.
Sie können eine Sortierfunktion speichern, indem Sie dasselbe Sortierfeld und dieselbe Reihenfolge angeben, um eine spätere Verknüpfung vorzubereiten.
Danach verwenden wir die Auswahlfunktion, um die Felder zu projizieren oder die Felder umzubenennen. In diesem Fall möchten wir die Entitäts-ID in Emittenten- oder Transaktions-ID umbenennen und die ID nach ID gruppieren. Der Qt-Parameter wird standardmäßig im Suchhandler verwendet, gibt aber im Gegenzug eine paginierte Ausgabe zurück.
Sie werden nicht den gesamten Datensatz zurückbekommen. Wenn Sie die Verknüpfung auf die gesamten Sammlungsdaten anwenden möchten, müssen Sie in den Qt-Parametern den Wert exportieren einstellen.
In unserem Fall wollen wir innerJoin durchführen, um alle Übereinstimmungen auf einmal zu finden. In der zweiten Kollektion filtern wir die Daten aus der Solr-Finanzkollektion mit Hilfe der Suchfunktion, indem wir den Bereichsfilter auf die Bilanzsumme anwenden, die größer oder gleich 2.0 ist. Außerdem geben wir andere Filterkriterien an, wie periodType gleich Annual, latestStatement gleich true, stmnt date gleich last 18 months und AccountingStandards gleich USGAAP sowie den cross consolidationType gleich consolidated.
Anschließend verwenden wir die Auswahlfunktion, um dem Feld einen aussagekräftigeren Namen zu geben. Führen Sie die Sortierfunktion für die Entitäts-ID in aufsteigender Reihenfolge aus.
Für die Ratingsammlungen verwenden wir eine Suchfunktion, um die Filterung auf den Ratingwert anzuwenden, und legen den Ratingtyp gleich Fitch-Ratings fest und setzen ratingLatestFlg auf true.
Wir wählen die Entitäts-IDs als Sortierfeld und sortieren in aufsteigender Reihenfolge. Wie auf den vorherigen Folien beschrieben, bereiten wir uns auf die spätere Verknüpfungsbedingung vor.
Sobald alle Daten ordnungsgemäß aus den einzelnen Sammlungen herausgefiltert wurden, können wir zu den Verknüpfungsoperationen übergehen.
Wir machen den innerJoin, indem wir einen innerJoin zwischen der Kernsammlung und der Finanzsammlung kodieren, mit einer Join-Bedingung für die Agenten-ID. Es stehen mehrere Join-Typen zur Auswahl. Sie können die Hash-Join-Funktion zwei wählen, wenn die Daten mehr in den Speicher passen, bringt Ihnen das definitiv einen Leistungsvorteil gegenüber dem innerJoin, aber wir haben es mit großen Daten zu tun und können das nicht verwenden.
Wenn Sie die Funktion innerJoin aufrufen, geben Sie die Verknüpfungsbedingung mit einem Parameter an, der einer bestimmten Bedingung entspricht. Wenn beide Join-Felder auf beiden Seiten den gleichen Namen haben, können Sie dort nur einen einzigen Feldnamen eingeben. Wenn sie nicht gleich sind, müssen Sie angeben, dass der Name des linken Feldes gleich dem Namen des rechten Feldes ist.
Manchmal müssen wir vor der nächsten Verknüpfung eine weitere Sortierung durchführen, weil das Verknüpfungsfeld oder die Reihenfolge nicht die gleiche ist.
Dies ist nun unser letzter Satz von inneren Verknüpfungen. Die Daten, die aus der vorherigen Verknüpfung von Entity und Financials zurückgegeben wurden, werden nun mit den Rating-Daten verknüpft.
Wir wenden eine Sortierfunktion auf den innerJoin zwischen der Entität und der Finanzdaten an. Dies ist erforderlich, damit diese Daten korrekt mit der Bewertung verknüpft werden können, denn der innerJoin mit den Bewertungsdaten bezieht sich auf die Entitäts-ID und nicht auf die Agenten-ID, die wir im vorherigen Join verwendet haben.
So sieht unsere endgültige Abfrage aus. Wir führen die innere Verknüpfung von Entität und Finanzen durch und verknüpfen das Ergebnis dann mit der Bewertung.
In unserer Anforderung müssen wir eine Reduktionsoperation durchführen, um nach dem Feld gruppieren nach ID zu gruppieren, da alle Endergebnisse nach gruppieren nach ID ausgerichtet sind. Eine Entität wird viele Übereinstimmungen und viele Finanzdatensätze haben, gruppiert nach ihr wissen wir, ob wir null, eine oder viele Übereinstimmungen haben, gruppiert nach wissen wir, wie viele eindeutige Entitäten übereinstimmen.
Schließlich wenden wir die Paginierung an, indem wir die Funktion limit und die Funktion skip verwenden, um sie paginiert anzuzeigen.
Führen Sie nun die obige Abfrage aus und sehen Sie sich die JSON-Daten an, die von allen vorherigen Streaming Expressions-Funktionen zurückgegeben werden. Das linke Feld enthält eindeutige Entity-Informationen, auch wenn es nur eine der vielen Entities auswählt und links anzeigt. Auf der rechten Seite werden die gruppierten Daten in einem Array angezeigt. Sie können sehen, dass es verschiedene mögliche Verknüpfungen mit dem Rating und den finanziellen Details enthält.
Wir sind froh, dass wir einen Streaming-Ausdruck implementiert haben, um die gewünschte Ausgabe zu erzeugen, aber wie kann ich alle Datensätze anzeigen, wenn die Leistung nicht stimmt? Sie möchten die Datensätze in einem Paginierungsformat durchsuchen können. Aber wenn wir alle Solr-Teile durchsuchen, finden wir nichts dergleichen. Was sollen wir tun?
Zurückgehen und umgestalten? Nein.
Wir wussten, dass Solr eine Open-Source-Software ist, und wir beschlossen, einen neuen Solr-Streaming-Ausdruck zu implementieren, um ihn zu unterstützen. Bevor wir das taten, fanden wir einen Patch dafür, aber der war für das neuere Solr 8, nicht für Solr 7, und die Architekturen der Streaming Expressions wurden in Solr 8 überarbeitet.
Wir werden also die gleiche Berechnungslogik in unsere eigene Solr-Version migrieren und dann wieder in Solr integrieren.
Um neue Streaming-Funktionen hinzuzufügen, ist es erforderlich, die abstrakte Klasse TupleStream zu erweitern und dann eine ausdruckbare Schnittstelle zu implementieren. Es wurden zwei Stream-Funktionen hinzugefügt. SkipStream wird verwendet, um zunächst die Anzahl der Tupel zu überspringen. LimitStream wurde erstellt, um die Gesamtzahl der zurückzugebenden Datensätze zu begrenzen.
Aktualisieren Sie zuletzt die Klasse StreamHandler, um sie in streamFactory zu laden. So lädt das streamFactory-Objekt sie zusammen mit anderen Funktionen für Streaming-Ausdrücke beim Starten.
Um sicherzustellen, dass unsere Version kompatibel ist, haben wir dieselbe Version heruntergeladen, die wir auf unserem Server verwenden, und Änderungen und Aktualisierungen daran vorgenommen.
Wir verwenden Solr über die Software von Lucidworks Fusion. Da Solr in die Fusion-Software eingebettet ist, müssen wir die Fusion-Solr-Bibliotheken aktualisieren. Damit unser Fusion die neue Streaming Expression Funktion sehen kann. Fusion hat Solr neu verpackt, so dass es mehrere Stellen gibt, die Sie aktualisieren müssen. Bevor Sie diese aktualisieren, sollten Sie eine Sicherungskopie Ihrer alten Version erstellen, damit Sie im Falle eines Fehlers zum vorherigen Stand zurückkehren können.
Nachdem Sie eine Solr-Instanz erfolgreich getestet haben, laden und aktualisieren Sie den Rest Ihrer Solr-Instanz in Ihrem Solr-Cluster.
Die Phase der Erstellung des Streaming-Ausdrucks ist abgeschlossen. Als Nächstes übergebe ich an Prem, der Ihnen zeigen wird, wie wir die nächste Phase der Projektdurchführung umschalten.
Prem: Vielen Dank, Weiling.
Apropos Leistungsoptimierungen.
Wir waren sehr begeistert von der Verwendung von Streaming Expressions, denn sie löste alle unsere Probleme. Allerdings stellten wir eine gewisse Langsamkeit bei den Abfragen fest, wenn wir komplexe Verknüpfungen mit vielen Filtern durchführten.
Um dies zu verbessern, haben wir die Abfragen analysiert und Wege zur Verbesserung der Leistung gefunden. Wir haben die folgenden Ansätze gefunden, die uns geholfen haben:
- Als erstes haben wir geeignete Filter angewandt, um die Gesamtdatenmenge zu reduzieren, bevor wir die Verknüpfung durchgeführt haben.
- Wir haben auch die Felder zur Auswahl aus beiden Join-Sammlungen eingeschränkt.
- Wir haben die Funktion Parallel verwendet, um parallele Berechnungen durchzuführen, wo immer dies möglich war.
- Wir haben uns auch für eine Hybridlösung zwischen der Standard-Solr-Abfrage und den Streaming-Ausdrücken entschieden, wenn wir komplexe Verknüpfungen durchführen.
Wir werden den hybriden Ansatz auf den nächsten Folien näher erläutern.
Werfen wir nun einen Blick auf die Architektur, die wir haben. Unsere Indexdaten sind in Solr verfügbar, und wir haben in Fusion Pipelines erstellt, um die Daten aus Solr abzurufen. Hier haben wir eine weitere Schicht zwischen Fusion und einem Web-Client namens Fusion Query Service eingeführt.
Der Fusion Query Service hilft uns, die Streaming-Ausdrücke zu erstellen. Die vom Client kommende Anfrage wird in dieser Schicht weitergeleitet und in eine Abfrage mit Streaming-Ausdruck umgewandelt.
Die von Solr oder Fusion erhaltene Antwort wird in eine JSON-Ausgabe umgewandelt und an den Client zurückgeschickt.
Diese Art von Architektur hilft uns, die unnötigen Implementierungsdetails vor dem Client zu verbergen. Außerdem können wir den Clients eine einfache Nutzlast für die Abfrage der Daten zur Verfügung stellen. Außerdem muss sich der Kunde auf diese Weise keine Gedanken über die Joins und die darunter verwendeten Technologien machen.
Das sind die Vorteile, die diese Art von Architektur für uns bereithält.
Um auf den hybriden Ansatz zurückzukommen. Wir haben eine Entscheidung auf der Grundlage des Benutzerverhaltens und der daraus resultierenden Funktionalität getroffen.
Wenn wir unsere Standardseite laden, zeigen wir nur die Informationen zur Entität und zur Standardbewertung an. In diesen Fällen haben wir die Abfragen gesehen, bei denen die Pipeline besser abschnitt als die gemeinsamen Abfragen.
Ohne diese Abfragen sind eine normale Entitäts- und Rating-Pipeline und die Verarbeitung der Daten in der Service-Schicht selbst. Wenn ein Benutzer jedoch die erweiterten Filter auf das Entitätsrating und die Finanzdaten ohne diese Abfragen über die Streaming Expression Pipeline anwendet, bietet uns dieser Ansatz ein ausgewogenes Verhältnis zwischen der Abfrage einfacher Daten und der Abfrage erweiterter Daten über komplexe Joins.
Damit übergebe ich das Wort wieder an Weiling, die über einige Erkenntnisse aus der Sitzung sprechen wird. Und wir sehen uns wieder bei den Fragen und Antworten. Ich danke Ihnen.
Weiling: Vielen Dank, Prem. Wenn wir auf unsere bisherigen Erfahrungen mit der Implementierung von Streaming-Ausdrücken zurückblicken, haben wir einige sehr gut gemacht, andere konnten wir mit anderen Optionen besser machen.
Dies sind die Erkenntnisse, die wir aus unserer Erfahrung gewonnen haben. Wenn Sie eine benutzerdefinierte Implementierung hinzufügen müssen, verwenden Sie den Ansatz des Streaming Expression Plugins, um eine ausschließlich interne Funktion hinzuzufügen. Die Plugin-Architektur von Solr für Streaming Expressions ist eine bessere Option und besser erweiterbar.
Es gibt einen früheren Activate-Vortrag von Bloomberg zu diesem Thema. Sie können auf YouTube danach suchen oder mich später im Chat-Kanal fragen. Sie können gerne teilen und einen Beitrag für die Solr-Community leisten.
Sie können unseren Ansatz verwenden, indem Sie die Solr Create Empty Worker Collection neu erstellen und bereitstellen, um einen Streaming Expression Handler auszuführen.
Sie können die Leistung von Streaming-Ausdrücken anpassen, indem Sie mehrere Shots und Replikate erstellen. Dadurch werden mehrere Worker ausgelöst, die den Streaming-Ausdruck auf einem leeren Datensatz ausführen.
Verwenden Sie parallel und parallelList, um Berechnungen zu parallelisieren, wann immer dies möglich ist. Bei einigen Abfragen gibt es keine Abhängigkeits- oder Ordnungsbeschränkungen. Die parallele Streaming-Verarbeitung maximiert die Anwendung des Filters vor der Anwendung des Verknüpfungsoperators. Unsere Leistungstests haben ergeben, dass die Berechnungszeit des Streaming-Ausdrucks linear mit der Größe der Daten korreliert.
Zuletzt erstellen und validieren Sie den Streaming-Ausdruck Schritt für Schritt. Wir haben festgestellt, dass dies beim Debuggen und Erstellen von Abfragen beim ersten Mal sehr effektiv ist.
Und schließlich: Fragen und Antworten.
Wenn Sie Fragen zu einem der in dieser Sitzung vorgestellten Themen haben, wenden Sie sich bitte über die von Activate bereitgestellte Chat-Funktion an uns.
Vielen Dank, dass Sie an der Sitzung teilnehmen, und auch vielen Dank an Lucidworks, die uns die Möglichkeit gegeben haben, auf dieser Konferenz zu präsentieren. Falls Sie sich mit uns in Verbindung setzen möchten, finden Sie unsere E-Mail-Adressen unter den Sprecherprofilen.
Vielen Dank, ich wünsche Ihnen noch einen schönen Tag und viel Spaß bei den weiteren Sitzungen.