Einstellen von Rich Documents in Apache Solr mit SolrJ und Solr Cell (Apache Tika)

Solr Cell, eine neue Funktion im bald erscheinenden Solr 1.4, ermöglicht es Benutzern, umfangreiche Dokumente wie MS Word und Adobe…

Solr Cell, eine neue Funktion im bald erscheinenden Solr 1.4, ermöglicht es Benutzern, umfangreiche Dokumente wie MS Word und Adobe PDF direkt an Solr zu senden und sie für die Suche indizieren zu lassen. Alle Beispiele auf der Solr Cell Wiki-Seite zeigen jedoch nur, wie man die Dokumente mit dem Kommandozeilenprogramm curl einschickt, während viele Solr-Benutzer auf SolrJ, den Java-basierten Client von Solr, zurückgreifen. Daher habe ich mir gedacht, dass ich hier ein kurzes SolrJ-Beispiel anbringe (und das Wiki aktualisieren werde), das zeigt, wie man das macht.

Für dieses Beispiel verwende ich das Standard-Solr-Beispiel und die Solr-Stammversion von heute Morgen, die ich über SVN erhalten habe:

svn co https://svn.apache.org/repos/asf/lucene/solr/trunk apache-solr

Nachdem ich in das Verzeichnis gewechselt habe, in das ich ausgecheckt habe, habe ich das Beispiel mit Apache Ant erstellt:

ant clean example //slight overkill, but I did it nonetheless

Anschließend wechselte ich in das Beispielverzeichnis (trunk/example) und führte es aus:

java -jar start.jar

Solr ist jetzt eingerichtet und läuft. Im Solr-Tutorial finden Sie weitere Informationen zu diesen Schritten.

Auf der Codeseite habe ich SolrJ verwendet, indem ich einen neuen SolrServer erstellt und dann die entsprechende Anfrage mit einem ContentStream (im Wesentlichen ein Wrapper um eine Datei) erstellt und an Solr gesendet habe:

public class SolrCellRequestDemo {
  public static void main(String[] args) throws IOException, SolrServerException {
    SolrServer server = new CommonsHttpSolrServer("http://localhost:8983/solr");
    ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract");
    req.addFile(new File("apache-solr/site/features.pdf"));
    req.setParam(ExtractingParams.EXTRACT_ONLY, "true");
    NamedList<Object> result = server.request(req);
    System.out.println("Result: " + result);
}

In diesem Code für SolrJ habe ich nur eine Extraktion vorgenommen, aber Sie können Ihre Parameter auf der Grundlage der Wiki-Seitenbeschreibungen auf Solr Cell leicht ersetzen. Die wichtigste Klasse, die Sie verwenden sollten, ist die ContentStreamUpdateRequest, die dafür sorgt, dass die ContentStreams richtig gesetzt werden, SolrJ kümmert sich um den Rest.

Ich hoffe, Sie haben einen kurzen Eindruck davon bekommen, wie Sie Dateien über SolrJ an Solr Cell senden können. Beachten Sie auch, dass die ContentStreamUpdateRequest nicht nur für Solr Cell spezifisch ist. Sie können CSV an den CSV Update Handler und jeden anderen Request Handler senden, der mit Content Streams für Updates arbeitet.

Der Vollständigkeit halber: Die Ausgabe des obigen Codes sieht wie folgt aus (einige Ergebnisse wurden für die Bildschirmbreite umformatiert):

Result: {responseHeader={status=0,QTime=1692},null=
Einführung in den Solr Enterprise Search Server Inhaltsverzeichnis 1 Solr in Kürze… 2 2 Solr nutzt die Lucene-Suchbibliothek und erweitert sie!… 2 3 Detaillierte Funktionen..2 3.1 Schema… 2 3.2 Abfrage… 3 3.3 Kern…. 3 3.4 Caching…3 3.5 Replikation…4 3.6 Verwaltungsoberfläche…4 Copyright © 2007 The Apache Software Foundation. Alle Rechte vorbehalten.

 

1. Solr in Kürze Solr ist ein eigenständiger Suchserver für Unternehmen mit einer Webservice-ähnlichen API. Sie legen Dokumente per XML über HTTP an (Indizierung“ genannt). Sie fragen ihn über HTTP GET ab und erhalten XML-Ergebnisse. – Erweiterte Volltextsuchfunktionen – Optimiert für hohen Webverkehr – Standardbasierte offene Schnittstellen – XML und HTTP – Umfassende HTML-Administrationsschnittstellen – Serverstatistiken zur Überwachung über JMX – Skalierbarkeit – Effiziente Replikation auf andere Solr-Suchserver – Flexibel und anpassbar durch XML-Konfiguration – Erweiterbare Plugin-Architektur 2. Solr nutzt die Lucene-Suchbibliothek und erweitert sie! – Ein echtes Datenschema, mit numerischen Typen, dynamischen Feldern, eindeutigen Schlüsseln – Leistungsstarke Erweiterungen der Lucene Abfragesprache – Unterstützung für dynamisches Facettensuchen und Filtern – Fortgeschritten, Konfigurierbare Textanalyse – Hochgradig konfigurierbares und vom Benutzer erweiterbares Caching – Leistungsoptimierungen – Externe Konfiguration über XML – Eine Administrationsschnittstelle – Überwachbare Protokollierung – Schnelle inkrementelle Updates und Snapshot-Verteilung – Verteilte Suche mit Sharded-Index auf mehreren Hosts – XML- und CSV-/Text-Updateformate – Einfache Möglichkeiten, Daten aus Datenbanken und XML-Dateien von lokalen Festplatten und HTTP-Quellen zu übernehmen – Mehrere Suchindizes 3. Detaillierte Funktionen 3.1. Schema – Definiert die Feldtypen und Felder von Dokumenten – Kann eine intelligentere Verarbeitung ermöglichen – Deklarative Lucene Analyzer Spezifikation Einführung in den Solr Enterprise Search Server Seite 2 Copyright © 2007 The Apache Software Foundation. Alle Rechte vorbehalten.

 

– Dynamische Felder ermöglichen das fliegende Hinzufügen neuer Felder – CopyField-Funktionalität ermöglicht die Indizierung eines einzelnen Feldes auf mehrere Arten oder die Kombination mehrerer Felder zu einem einzigen durchsuchbaren Feld – Explizite Typen machen das Erraten von Feldtypen überflüssig – Externe dateibasierte Konfiguration von Stoppwortlisten, Synonymlisten und geschützten Wortlisten – Viele zusätzliche Textanalysekomponenten, einschließlich Wortsplitting, Regex und soundähnliche Filter 3.2. Abfrage – HTTP-Schnittstelle mit konfigurierbaren Antwortformaten (XML/XSLT, JSON, Python, Ruby) – Sortierung nach einer beliebigen Anzahl von Feldern – Erweiterter DisMax-Abfrageparser für Ergebnisse mit hoher Relevanz aus vom Benutzer eingegebenen Abfragen – Hervorgehobene Kontextausschnitte – Facettensuche auf der Grundlage eindeutiger Feldwerte und expliziter Abfragen – Rechtschreibvorschläge für Benutzerabfragen – Vorschläge für „More Like This“ für ein bestimmtes Dokument – Konstanter Bewertungsbereich und Präfix-Abfragen – keine idf-, coord- oder lengthNorm-Faktoren und keine Beschränkung der Anzahl der Begriffe, auf die die Abfrage zutrifft. – Funktionsabfrage – Beeinflussung der Punktzahl durch eine Funktion des numerischen Wertes oder der Ordnungszahl eines Feldes – Datumsmathematik – Angabe von Datumsangaben relativ zu „NOW“ in Abfragen und Aktualisierungen – Leistungsoptimierungen 3.3. Kern – Steckbare Query Handler und erweiterbares XML-Datenformat – Durchsetzung der Eindeutigkeit von Dokumenten auf der Grundlage eines eindeutigen Schlüsselfeldes – Stapelverarbeitung von Aktualisierungen und Löschungen für hohe Leistung – Benutzerkonfigurierbare Befehle, die bei Indexänderungen ausgelöst werden – Steuerung der Gleichzeitigkeit von Suchvorgängen – Korrekte Behandlung numerischer Typen sowohl bei Sortier- als auch bei Bereichsabfragen – Möglichkeit der Steuerung, wo Dokumente mit fehlendem Sortierfeld platziert werden – „Luke“-Anfrage-Handler für Korpusinformationen 3.4. Caching – Konfigurierbare Cache-Instanzen für Abfrageergebnisse, Filter und Dokumente – Pluggable Cache-Implementierungen – Cache-Erwärmung im Hintergrund – Wenn ein neuer Sucher geöffnet wird, werden konfigurierbare Suchvorgänge gegen ihn ausgeführt, um eine Einführung in den Solr Enterprise Search Server Seite 3 Copyright © 2007 The Apache Software Foundation. Alle Rechte vorbehalten.

 

aufwärmen, um langsame erste Treffer zu vermeiden. Während des Aufwärmens bearbeitet der aktuelle Sucher Live-Anfragen. – Autowarming im Hintergrund – Die zuletzt abgerufenen Objekte im Cache des aktuellen Suchers werden im neuen Sucher wieder aufgefüllt, was hohe Cache-Trefferquoten bei Index-/Suchmaschinenänderungen ermöglicht. – Schnelle/kleine Filterimplementierung – Caching auf Benutzerebene mit Unterstützung für Autowarming 3.5. Replikation – Effiziente Verteilung von Indexteilen, die sich über den rsync-Transport geändert haben – Pull-Strategie ermöglicht das einfache Hinzufügen von Suchern – Konfigurierbares Verteilungsintervall ermöglicht einen Kompromiss zwischen Aktualität und Cache-Auslastung 3.6. Admin Interface – Umfassende Statistiken über Cache-Nutzung, Aktualisierungen und Abfragen – Textanalyse-Debugger, der das Ergebnis jeder Stufe eines Analysators anzeigt – Web Query Interface mit Debugging-Ausgabe – geparste Abfrageausgabe – Lucene explain() document score detailing – explain score für Dokumente außerhalb des angeforderten Bereichs, um zu debuggen, warum ein bestimmtes Dokument nicht höher eingestuft wurde. Einführung in den Solr Enterprise Search Server Seite 4 Copyright © 2007 The Apache Software Foundation. Alle Rechte vorbehalten.

,null_metadata={stream_source_info=[null],stream_content_type=[null],stream_size=[13242], producer=[FOP 0.20.5],stream_name=[null],Content-Type=[application/pdf]}}

You Might Also Like

Vom Suchunternehmen zum praktischen KI-Pionier: Unsere Vision für 2025 und darüber hinaus

CEO Mike Sinoway gibt Einblicke in die Zukunft der KI und stellt...

Read More

Wenn KI schief geht: Fehlschläge in der realen Welt und wie man sie vermeidet

Lassen Sie nicht zu, dass Ihr KI-Chatbot einen 50.000 Dollar teuren Tahoe...

Read More

Lucidworks Kernpakete: Branchenoptimierte KI-Such- und Personalisierungslösungen

Entdecken Sie unsere umfassenden Core Packages, die Analytics Studio, Commerce Studio und...

Read More

Quick Links