Entwicklung eines Solr-Plugins
Dank an Andrew Janowczyk von Searchbox.com für diesen Beitrag. Bei unserem Hauptprodukt Searchbox.com sind wir bestrebt, unseren Benutzern die modernsten…
Dank an Andrew Janowczyk von Searchbox.com für diesen Beitrag.
Bei unserem Hauptprodukt Searchbox.com sind wir bestrebt, unseren Benutzern die modernsten Technologien zur Verfügung zu stellen. Wie wir bereits in früheren Blogbeiträgen erwähnt haben, verlassen wir uns stark auf Solr und Lucene, um das Gerüst für diese Funktionalitäten bereitzustellen. Das Schöne am Solr-Framework ist, dass es die einfache Entwicklung von Plugins ermöglicht, mit denen sich die Möglichkeiten der Software erheblich erweitern lassen. Wir werden eine Reihe von Slideshares erstellen, in denen beschrieben wird, wie 3 Arten von Plugins implementiert werden, damit Sie die Lernkurve übertreffen und Ihre eigene benutzerdefinierte Solr-Installation jetzt erweitern können.
Es gibt hauptsächlich 4 Arten von benutzerdefinierten Plugins, die erstellt werden können. Wir werden ihre Unterschiede hier besprechen:
Suchkomponenten: Suchkomponenten sind Plugins, die mit einer Ergebnismenge einer Suchanfrage arbeiten. Die Ergebnisse, die sie erzeugen, erscheinen normalerweise am Ende der Suchanfrage. Angenommen, wir haben ein Feld namens „myfield“ und möchten bei der Abfrage verschiedene Wörter zählen, dann würde die Antwort etwa so aussehen:
[code language=“xml“]
[/code]
Wir sehen die typische Solr-Antwort in den XML-Tags, aber darunter sehen wir auch ein < /lst> Element, das die Ergebnisse unserer Wortzählung für beide Ergebnisdokumente enthält, die von unserer demoSearchComponent bereitgestellt werden. Im Grunde wird dieser Prozess also für jedes Dokument in einer Ergebnismenge ausgeführt. Dies könnte für die Spracherkennung in Echtzeit, die Erstellung von Snippets oder das Tagging nützlich sein (alle diese Funktionen sind als Suchfeld-Plugins zum kostenlosen Testen verfügbar). Aber bedenken Sie, dass es bei statischen Inhalten keinen Sinn macht, diesen Prozess jedes Mal durchzuführen, wenn dasselbe Dokument in der Ergebnismenge erscheint. Nicht wirklich, und genau hier kommen Prozessfabriken ins Spiel.
Process Factories: Wenn der Inhalt statisch ist und das von der Suchkomponente erwartete Ergebnis deterministisch ist, ist es sinnvoller, eine Process Factory zu verwenden. Während der Indexierungszeit kann eine Prozessfabrik zur Datenimportkette hinzugefügt werden, so dass jedes Dokument analysiert wird und neue Felder mit den daraus resultierenden Informationen gespeichert werden können. Da sich beispielsweise die Sprache eines Dokuments nie ändert, können wir während der Indexierungszeit einmal eine Spracherkennung durchführen und diese in einem neuen Feld speichern, so dass wir bei Suchanfragen diese Informationen ohne zusätzlichen Overhead (nämlich die erneute Erkennung der Sprache) zurückgeben können.
Anfrage-Handler: Request Handler werden verwendet, um einen REST-Endpunkt von der Solr-Instanz aus bereitzustellen, um eine bestimmte Arbeit zu erledigen. Ein Beispiel wäre: http://localhost:8982/collection1/detectLanguage?q=“Text zur Spracherkennung“. Beachten Sie, dass der Unterschied hier darin besteht, dass wir einen reinen Text als Abfrage bereitstellen und den Text direkt verarbeiten lassen können, um ein XML-Ergebnis ähnlich dem folgenden zu erzeugen:
[code language=“xml“]
[/code]
Diese Arten von Plugins sind sehr nützlich, um nicht nur hauptsächlich Text zu verarbeiten, sondern auch um mit dem zugrunde liegenden Repository zu arbeiten. Sie haben auch Zugriff auf die in den Dokumenten enthaltenen Informationen. So könnten Sie zum Beispiel einen requestHandler verwenden, um zu zählen, wie oft das Wort „searchbox“ in allen indizierten Dokumenten vorkommt.
Filter: Während der Index- und Abfragezeit erstellen wir oft eine Reihe von Filterketten für Textanalysen wie z.B. Kleinschreibung, Stemming, n-gramming usw. Es gibt keinen Grund, warum Sie nicht Ihre eigene Art der Analyse hinzufügen können! Unsere Erfahrung hat jedoch gezeigt, dass die meisten gängigen Filter bereits mit genügend konfigurierbaren Parametern erstellt wurden, so dass sie fast alle Anwendungsfälle abdecken sollten. Bevor Sie also versuchen, einen eigenen Filter zu entwickeln, ist es sinnvoll, die Liste aller verfügbaren Filter gründlich durchzusehen und zu prüfen, ob es eine Kombination von Filtern gibt, die Ihren Bedürfnissen genau entspricht.
In den kommenden Wochen werden wir Tutorials und Quellcode für die Entwicklung Ihrer eigenen Suchkomponenten, Process Factories und Request Handler bereitstellen. Wenn Sie ein bestimmtes Projekt im Sinn haben, würden sich die Solr-Experten von searchbox.com natürlich freuen, davon zu hören!
Sie können den Originalbeitrag hier sehen.