Apache Solr und Apache Lucene 4.0.0 veröffentlicht
Heute hat die Apache Software Foundation offiziell die Veröffentlichung von Apache Solr 4.0.0 und Apache Lucene 4.0.0 bekannt gegeben. Eine kommentierte Version der „Release Highlights“ finden Sie unten.
Die Bedeutung von 4.0.0
Die Veröffentlichung von 4.0.0 hat über 2 Jahre gedauert und ist das erste wirklich „revolutionäre Release“ des Lucene-Projekts, verglichen mit den meisten „evolutionären“ X.0-Releases der Vergangenheit. Aus diesem Anlass hielt ich es für angebracht, Kommentare und Gedanken verschiedener Lucene/Solr-Entwickler zu sammeln, wie sie über dieses Ereignis denken.
Ich persönlich kann das Ausmaß dieser Veröffentlichung nicht einmal ansatzweise beschreiben. Ich arbeite seit 8 Jahren mit Lucene & Solr. In dieser Zeit habe ich gesehen, wie sich das Projekt (und der Code) in einer Weise verändert und weiterentwickelt hat, die ich mir nie hätte vorstellen können, als ich anfing, mich damit zu beschäftigen. Ich würde mich freuen, von anderen Nutzern zu hören, was Sie von der neuen Version halten – entweder auf den Mailinglisten oder im Kommentarformular unten.
Und herzlichen Glückwunsch an alle. Es hat lange gedauert, bis dieser Tag gekommen ist. 4.0 hat sich für mich immer angenehm weit entfernt angefühlt – das wird eine Umstellung sein 😉
Diese Community entwickelt fantastische Software, und es war mir ein Vergnügen, daran mitzuwirken, dass es so weit kommt.
Vielen Dank an alle, die dazu beigetragen haben, dass diese Veröffentlichung so großartig ist.
Besonderen Dank an unseren furchtlosen Release Manager.
Es ist großartig, endlich die Veröffentlichung von Solr 4 zu sehen, mit der die Skalierbarkeit von SolrCloud, die NoSQL-Funktionen und natürlich die Leistungsverbesserungen in die Hände der Benutzer gelangen.
Solr und Lucene 4.0 stellen einen Wendepunkt in der Entwicklung der nächsten Generation von Open-Source-Suchfunktionen dar. Die führende Open-Source-Suchbibliothek und der führende Open-Source-Suchserver konzentrieren sich auf die Entwicklung von Tools für die nächste Generation von datengesteuerten Echtzeitanwendungen in großem Maßstab und festigen damit ihre Position als erste Adresse für die Suche. Darüber hinaus ist 4.0 flexibler als je zuvor und spricht sowohl diejenigen an, die einfach nur funktionieren wollen, als auch diejenigen, die die Kontrolle über alle Details wünschen. Ob es nun die neuen flexiblen Indizierungs- und Scoring-Funktionen oder die einfache Skalierung von SolrCloud sind, die Chancen stehen gut, dass Lucene und Solr 4.0 die nötigen Werkzeuge haben, um viele schwierige Suchprobleme zu lösen.
Jede neue Version bringt großartige neue Funktionen und Fehlerbehebungen für Lucene und Solr. Das Besondere an 4.0 sind meiner Meinung nach die „Meta-Funktionen“ wie die flexible Indizierung und das Scoring, die den Benutzern neue Freiheiten geben, um grundlegende Änderungen an der Art und Weise zu erforschen, wie Lucene seinen Index speichert und Abfragetreffer bewertet. Solch tiefgreifende Erkundungen waren vorher nicht wirklich möglich. Ich freue mich also auf die lustigen Dinge, die unsere Benutzer auf der Grundlage dieser Meta-Funktionen entwickeln.
4 mehr Lucene! 4 mehr Solr!
ich bin müde 🙁
es ist 2 Uhr nachts! ich habe keine Ahnung mehr….
(Kommentierte) Highlights der Veröffentlichung
Solr 4.0 Highlights der Veröffentlichung
Die größte Gruppe von Funktionen trägt den Entwicklungs-Codenamen„Solr Cloud“ und beinhaltet die einfache Skalierbarkeit von Solr. Siehe wiki.apache.org/solr/SolrCloud für weitere Details.
- Verteilte Indizierung, die von Grund auf für Near Realtime (NRT) und NoSQL-Funktionen wie Realtime-Get, optimistisches Sperren und dauerhafte Aktualisierungen entwickelt wurde.
- Hohe Verfügbarkeit ohne Single Points of Failure.
- Apache Zookeeper-Integration für verteilte Koordination und Speicherung von Cluster-Metadaten und -Konfigurationen.
- Immunität gegen Split-Brain-Probleme durch die verteilten Paxos-Konsensprotokolle von Zookeeper.
- Aktualisierungen, die an einen beliebigen Knoten im Cluster gesendet werden, werden automatisch an den richtigen Shard weitergeleitet und zur Redundanz auf mehrere Knoten repliziert.
- Abfragen, die an einen beliebigen Knoten gesendet werden, führen automatisch eine vollständig verteilte Suche im gesamten Cluster mit Lastausgleich und Ausfallsicherung durch.
- Eine API zur Verwaltung von Sammlungen.
- Intelligenter SolrJ-Client(CloudSolrServer), der Dokumente nur an die Shard-Leiter senden kann
Solr 4.0 enthält mehr NoSQL-Funktionen für diejenigen, die Solr als primären Datenspeicher verwenden:
- Dauerhaftigkeit der Aktualisierung – Ein Transaktionsprotokoll stellt sicher, dass auch unbestätigte Dokumente nie verloren gehen.
- Real-time Get – Die Möglichkeit, schnell die neueste Version eines Dokuments abzurufen, ohne dass Sie eine neue Suche starten müssen.
- Versionierung und optimistisches Sperren – in Kombination mit Echtzeit-Get ermöglicht dies eine Lese-, Update- und Schreibfunktionalität, die sicherstellt, dass keine widersprüchlichen Änderungen gleichzeitig von anderen Clients vorgenommen werden.
- Atomare Aktualisierungen – die Möglichkeit, Felder eines bestehenden Dokuments hinzuzufügen, zu entfernen, zu ändern und zu erhöhen, ohne dass Sie das komplette Dokument erneut einsenden müssen.
Zu den vielen zusätzlichen Verbesserungen gehören:
- Neue räumliche Feldtypen mit Polygonunterstützung.
- Pivot-Facettierung – Mehrstufige oder hierarchische Facettierung, bei der die obersten Beschränkungen für ein Feld für jede oberste Beschränkung eines anderen Feldes gefunden werden.
- Pseudofelder – Die Möglichkeit, Felder mit Aliasen zu versehen oder Metadaten zu den zurückgegebenen Dokumenten hinzuzufügen, z. B. Funktionsabfragewerte und Ergebnisse räumlicher Entfernungsberechnungen.
- Eine Implementierung der Rechtschreibprüfung, die direkt aus dem Hauptindex heraus arbeiten kann, anstatt einen Sidecar-Index zu erstellen.
- Pseudo-Join-Funktionalität – Die Möglichkeit, eine Gruppe von Dokumenten auf der Grundlage ihrer Beziehung zu einer zweiten Gruppe von Dokumenten auszuwählen.
- Verbesserungen bei Funktionsabfragen, einschließlich bedingter Funktionsabfragen und Relevanzfunktionen.
- Neue Aktualisierungsprozessoren erleichtern das Ändern von Dokumenten vor der Indizierung.
- Eine brandneue Webadministrationsoberfläche, einschließlich Unterstützung für SolrCloud und verbesserter Fehlerberichterstattung
- Zahlreiche Fehlerkorrekturen und Optimierungen.
Bemerkenswerte Änderungen seit 4.0-BETA:
- Neue räumliche Feldtypen mit Polygonunterstützung.
- Verschiedene Verbesserungen der Admin UI.
- SolrCloud-bezogene Leistungsoptimierungen beim Schreiben des Transaktionsprotokolls, PeerSync-Wiederherstellung, Leader-Wahl und ClusterState-Caching.
- Zahlreiche Fehlerkorrekturen und Optimierungen.
Eine vollständige Liste der Details finden Sie in der Datei CHANGES.txt, die der Version beiliegt.
Lucene 4.0 Highlights der Veröffentlichung
- Die Indexformate für Begriffe, Buchungslisten, gespeicherte Felder, Begriffsvektoren usw. sind über die Codec-Api einfügbar. Sie können aus den bereitgestellten Implementierungen wählen oder das Indexformat mit Ihrem eigenen Codec an Ihre Bedürfnisse anpassen.
- Die Ähnlichkeit wurde vom Vektorraummodell(TF/IDF) entkoppelt. Zusätzliche Modelle wie BM25, Divergenz von Zufälligkeit, Sprachmodelle und informationsbasierte Modelle werden bereitgestellt.
- Die neue Funktion Dokumentwerte speichert eingegebene Werte pro Dokument. Sie kann für benutzerdefinierte Bewertungsfaktoren (zugänglich über Similarity), für vorsortierte Sortierwerte und mehr verwendet werden.
- IndexWriter überträgt jetzt Segmente gleichzeitig auf die Festplatte, wenn die Anwendung mehrere Threads für die Indizierung verwendet, was zu einer erheblichen Leistungssteigerung führt.
- Die Normalisierungsfaktoren pro Dokument („Normen“) sind nicht mehr auf ein einziges Byte beschränkt. Ähnlichkeitsimplementierungen können jeden DocValues-Typ verwenden, um Normen zu speichern.
- Es wurden neue Indexstatistiken hinzugefügt, darunter die Anzahl der Token für einen Begriff oder ein Feld, die Anzahl der Buchungen für ein Feld und die Anzahl der Dokumente mit einer Buchung für ein Feld. Diese unterstützen zusätzliche Scoring-Modelle.
- Ein neues Standard-Term-Wörterbuch/Index (BlockTree) indiziert gemeinsame Präfixe anstelle jedes n-ten Terms. Dies ist nicht nur zeit- und platzsparender, sondern vermeidet auch, dass Begriffe, die in bestimmten Fällen gar nicht existieren, auf der Festplatte gespeichert werden. Alternative Termwörterbuch-Implementierungen werden bereitgestellt und können über die Codec-Api hinzugefügt werden.
- Indizierte Begriffe sind nicht mehr auf UTF-16-Zeichenfolgen beschränkt, sondern können nun beliebige binäre Werte sein, die als Byte-Arrays kodiert sind. Standardmäßig werden Textbegriffe als UTF-8-Bytes kodiert. Die Sortierreihenfolge von Begriffen wird durch ihren binären Wert definiert, der mit der Sortierreihenfolge von UTF-8 (Unicode-Codepunkt) identisch ist.
- Erheblich schnellere Leistung bei der Verwendung eines Filters während der Suche.
- Auf dem Dateisystem basierende Verzeichnisse können die IO-Rate (MB/Sek.) von Merge-Threads begrenzen, um IO-Konflikte zwischen Merge- und Such-Threads zu reduzieren.
- Es wurde eine Reihe alternativer Codecs undKomponenten hinzugefügt:
- „Anhängen“ funktioniert mit reinen Anhänge-Dateisystemen (wie z.B. Hadoop DFS)
- „Memory“ schreibt die gesamten Begriffe+Beiträge als FST-Lesung in den RAM
- „Pulsing“ fügt die Einträge für Begriffe mit niedriger Frequenz in das Begriffswörterbuch ein
- „SimpleText“ schreibt alle Dateien im Klartext, um die Fehlersuche und Transparenz zu erleichtern.
- „Bloom“ verwendet einen Bloom-Filter, um beim Nachschlagen von Begriffen manchmal Festplattenzugriffe zu vermeiden.
- „Direct“ hält alle Buchungen als einfache byte[] und int[] für eine sehr schnelle Leistung auf Kosten eines sehr hohen RAM-Verbrauchs
- „Block“ verwendet ein neues Index-Layout und Kompressionsschema für verbesserte Leistung
- …unter anderem.
- Begriffsoffsets können optional in den Buchungslisten kodiert und pro Position abgerufen werden.
- Eine neue AutomatonQuery gibt alle Dokumente zurück, die einen Begriff enthalten, der einem angegebenen endlichen Automaten entspricht.
- FuzzyQuery ist 100-200 Mal schneller als in früheren Versionen.
- Eine neue Rechtschreibprüfung, DirectSpellChecker, findet mögliche Korrekturen direkt im Hauptsuchindex, ohne dass ein separater Index erforderlich ist.
- Verschiedene speicherinterne Datenstrukturen wie das Termwörterbuch und der FieldCache werden effizienter und mit weniger Objekt-Overhead dargestellt.
- Die gesamte Suchlogik muss jetzt pro Segment funktionieren. IndexReader wurde daher überarbeitet, um zwischen atomaren und zusammengesetzten Lesern zu unterscheiden.
- Lucene 4.0 bietet eine modulare API, die Komponenten wie Analyzers und Queries konsolidiert, die zuvor über Lucene core, contrib und Solr verstreut waren. Diese Module enthalten auch zusätzliche Funktionen wie die Integration von UIMA-Analyzern und eine komplett überarbeitete Implementierung der räumlichen Suche.
Bemerkenswerte Änderungen seit 4.0-BETA:
- Ein neues „Block“ PostingsFormat bietet eine verbesserte Suchleistung und Indexkomprimierung. Dieses Format wird wahrscheinlich in einer zukünftigen Version das Standardformat werden.
- Alle nicht standardmäßigen Codec-Implementierungen wurden in ein separates Codecs-Modul verschoben. Fügen Sie einfach lucene-codecs-4.0.0.jar zu Ihrem Klassenpfad hinzu, um diese zu testen.
- Die Nutzdaten können optional auf den Termvektoren gespeichert werden.
- Viele Bugfixes und Optimierungen.
Bitte lesen Sie CHANGES.txt und MIGRATE.txt für eine vollständige Liste der neuen Funktionen und Hinweise zum Upgrade. Insbesondere sind die neuen Apis nicht mit früheren Versionen von Lucene kompatibel. Allerdings ist die Abwärtskompatibilität der Dateiformate für Indizes aus der 3.0-Serie und den 4.0-Alpha- und -Beta-Versionen gewährleistet.