Solritas: Das verborgene Juwel von Solr 1.4
Solr 1.4 enthält eine wenig beworbene Funktion, von der ich denke, dass die Leute sie kennen sollten, Solritas. Was für ein alberner Name, sagen Sie! Ja, okay, nennen Sie es den langweiligen alten VelocityResponseWriter, wenn Sie wollen. Abgesehen von der verständlichen Aussprache lässt Solritas die Solr-Antworten wie eine echte Benutzeroberfläche aussehen. Nahe genug für die Arbeit in der Regierung, wie man sagt. Wir haben Solritas bei einer Reihe unserer jüngsten Aufträge effektiv eingesetzt. Nachdem wir die Daten unserer Kunden zum ersten Mal in Solr eingebracht haben, haben sie ein Suchfeld, Facetten und sogar umschaltbare Inline-Erklärungen zur Trefferquote und Anfrage/Antwort-Dumps (bei Verwendung von &debugQuery=true). Und wir fügen gerne das Logo des Kunden oben links ein, weil wir es können und weil es einfach ist.
Folgen Sie ein paar einfachen Schritten, um Solritas in der Beispielanwendung zu aktivieren, die mit Solr 1.4 ausgeliefert wird:
- Fügen Sie das Verzeichnis der VelocityResponseWriter-Bibliotheken zur Beispielsolrconfig.xml hinzu
- Registrieren Sie es als ein Antwortschreiber-Plugin mit dem Namen „velocity“.
- Kopieren Sie ein Vorlagenverzeichnis –
cp -R contrib/velocity/src/main/solr/conf/velocity example/solr/conf/velocity
- Und wenn wir schon dabei sind, erstellen wir eine schön benannte (URLs sind auch wichtig) Zuordnung für den Request Handler, der standardmäßig den Velocity Writer-Typ verwendet, sowie ein paar andere Grundeinstellungen, die für die Beispieldaten sinnvoll sind.
Ein Diff der einzigen hier berührten Konfigurationsdatei, solrconfig.xml, wird am Ende bereitgestellt, um Ihnen die Einzelheiten der oben genannten Schritte zu erläutern.
Starten Sie nun Solr
cd example java -jar start.jar
Indizieren Sie die Beispieldaten (aus einer anderen Shell)
cd example/exampledocs java -jar post.jar *.xml
und besuchen Sie http://localhost:8983/solr/itas. Es sollte in etwa wie dieser Screenshot aussehen:
Hey, ich will mein XML zurück! Ok, fügen Sie &wt=xml an die URL an. Das Ergebnis ist dasselbe, es wird nur anders dargestellt.
Wenn Sie debugQuery=true zu einer Anfrage hinzufügen, erhalten Sie eine angenehme Inline-Ansicht der Lucene-Erklärung für die Berechnung der Punktzahl jedes Ergebnisses. Sehen Sie selbst unter http://localhost:8983/solr/itas?q=ipod&debugQuery=true nach, wobei die Erklärungen zunächst ausgeblendet sind und durch Klicken auf den Link „toggle explain“ (Erklären einschalten) individuell sichtbar gemacht werden können:
In Solritas schlummern eine Menge interessanter Möglichkeiten und Potenziale. Hier sind ein paar bemerkenswerte bestehende Möglichkeiten:
- Vorlagen werden in den Anfrageparametern, einem Dateisystem-Basisverzeichnis und dem Klassenpfad gesucht – in dieser Reihenfolge. Auf diese Weise kann der anfragende Client eine Untervorlage, wie z.B. den Header, für jede Anfrage überschreiben. In JAR-Dateien gebündelte Plugins können ihre eigenen Vorlagen enthalten und das Dateisystem kann eingebettete Vorlagen überschreiben.
- Es stehen mehrere nützliche „Tools“ (wie Velocity sie nennt) zur Verfügung, um Zahlen und Daten zu formatieren, URL-Strings zu kodieren und andere praktisch notwendige Hilfsprogramme, um Daten für Menschen und Hyperlinks darstellbar zu machen.
- Einfacher Zugriff auf die gesamten Solr-Anfrage- und Antwortobjekte innerhalb einer Vorlage
Die folgenden Diffs sind die einzigen Änderungen, die erforderlich sind, um Solritas in der Beispielanwendung von Solr 1.4 zum Laufen zu bringen –
48a49,51 > <!-- Added path to VelocityResponseWriter library and dependencies --> > <lib dir="../../contrib/velocity/src/main/solr/lib"/> > 501a505,525 > <!-- /itas mapping for Solritas view with some basic good defaults: like dismax, facet on cat --> > <requestHandler name="/itas"> > <lst name="defaults"> > <str name="v.template">browse</str> > <str name="title">Solritas Demonstration</str> > > <str name="wt">velocity</str> > <str name="defType">dismax</str> > <str name="q.alt">*:*</str> > <str name="rows">10</str> > <str name="fl">*,score</str> > <str name="facet">on</str> > <str name="facet.field">cat</str> > <str name="facet.mincount">1</str> > <str name="qf"> > text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 > </str> > </lst> > </requestHandler> > > 1006a1031,1033 > <!-- Light up VelocityResponseWriter --> > <queryResponseWriter name="velocity" class="org.apache.solr.request.VelocityResponseWriter"/> >