Typesense 30.0: Open-Source-Suchmaschine mit globalen Kuratierungsregeln

Die Open-Source-Suchmaschine Typesense ist in Version 30.0 erschienen. Die neue Version bringt globale Kuratierungsregeln und Synonyme sowie IPv6-Support.

vorlesen Druckansicht
Close,Up,Of,Search,Button.,Concept,Of,Popularity,Of,Search

(Bild: Karramba Production/Shutterstock.com)

Lesezeit: 4 Min.
Inhaltsverzeichnis
close notice

This article is also available in English. It was translated with technical assistance and editorially reviewed before publication.

Die Entwickler der Open-Source-Suchmaschine Typesense haben Version 30.0 veröffentlicht. Das Update bringt grundlegende API-Änderungen für Synonyme und Kuratierungsregeln (Curation Rules) sowie neue Features wie Maximale Marginale Relevanz (Maximum Marginal Relevance, MMR) zur Diversifizierung von Suchergebnissen. Die bisher sammlungsspezifischen Synonyme und Kuratierungsregeln sind nun globale Ressourcen, die zwischen Sammlungen (Collections) geteilt werden können.

Administratoren müssen vor dem Update auf Version 30.0 einen Snapshot anlegen, da die neue Version eine automatische Migration durchführt. Dabei werden bestehende sammlungsspezifische Synonyme und Überschreibungen (Overrides) in globale Synonym-Sets und Kuratierungs-Sets überführt. Die API-Endpunkte ändern sich dabei von /collections/{collection}/synonyms/* zu /synonym_sets/* und von /collections/{collection}/overrides/* zu /curation_sets/*. Bestehende Suchanfragen funktionieren nach der Migration weiter, für Lese- und Schreibzugriffe auf die neuen Sets müssen Entwickler ihre Anwendungen jedoch an die neuen Endpunkte anpassen.

Ein zentrales neues Feature ist die Diversifizierung von Suchergebnissen per MMR. Der Algorithmus diversifiziert die obersten 250 Treffer basierend auf einer vordefinierten Ähnlichkeitsmetrik (Similarity-Metric). Die MMR-Formel berücksichtigt dabei sowohl die Relevanz eines Dokuments zur Suchanfrage als auch dessen Ähnlichkeit zu bereits ausgewählten Ergebnissen. Der Lambda-Parameter steuert die Balance zwischen Relevanz und Diversität, wobei der Standardwert 0,5 beträgt. Administratoren können MMR über Curation Sets mit verschiedenen Ähnlichkeitsmetriken wie Jaccard für Arrays oder Vector Distance für Embeddings konfigurieren.

Videos by heise

Die globale Struktur von Synonymen und Kuratierungsregeln reduziert Redundanzen, da diese Ressourcen nicht mehr für jede Sammlung separat angelegt werden müssen. Dies führt zu geringerem Speicherbedarf und potenziell besseren Cache-Hits bei der Wiederverwendung. Synonym-Sets unterstützen sowohl One-way- als auch Multi-way-Synonyme und können sprachspezifisch konfiguriert werden. In Kuratierungsregeln lassen sich nun auch Synonyme und Stemming verwenden, außerdem unterstützen sie MMR-Diversifizierung sowie dynamisches Filtern und Sortieren.

Version 30.0 erweitert die JOIN-Features deutlich. Der facet_by-Parameter unterstützt nun referenzierte Felder aus verknüpften Sammlungen, etwa facet_by=$Customers(product_price). Entwickler können mit include_fields die Anzahl verknüpfter Dokumente abrufen sowie Sortierung und Limits auf verknüpfte Felder anwenden. Neu ist auch die cascade_delete: false-Option, die verhindert, dass referenzierte Dokumente automatisch gelöscht werden, wenn alle Referenzen entfernt wurden. Diese Option erfordert async_reference: true im Schema.

Für die Suche in natürlicher Sprache (Natural Language Search) und Auto-Embedding unterstützt Typesense 30.0 nun OpenAI-Modelle von Azure sowie GCP Service Account Authentication. Dies ermöglicht die Integration in Cloud-Umgebungen mit Azure- und Google-Cloud-Modellen. Für die vektorbasierte Bildsuche stehen neue CLIP Multilingual Models zur Verfügung, die mehrsprachige Ähnlichkeitssuche (Similarity) in Bildern ermöglichen. Der neue IPv6-Support erlaubt Binding und Serving über IPv6-Adressen, was die Integration in moderne Dual-Stack- und IPv6-only-Netzwerke erleichtert.

Zu den Verbesserungen gehören ein truncate-Parameter für String-Felder zur besseren Suche mit einem exakten Treffer (Exact Match) bei langen Strings sowie group_max_candidates für exakte found-Werte bei group_by-Operationen. Die Synonym-Matching-Logik wurde verbessert und sortiert Ergebnisse nun nach Match-Qualität. Ein Transliterator-Pool beschleunigt die Tokenisierung für kyrillische und chinesische Zeichen. Die Vereinigungssuche (Union Search) unterstützt nun group_by, pinned_hits und ein remove_duplicates-Flag.

Version 30.0 behebt zahlreiche Fehler, darunter Probleme mit Analytik-IDs bei unterschiedlichen filter_by- und analytics_tag-Parametern sowie feldspezifische Token-Separatoren im Highlighting. Pagination-Parameter werden nun korrekt an die Vereinigungssuche übergeben, und Deadlocks bei asynchronen Referenzen wurden beseitigt. Das Highlighting wurde so angepasst, dass bei Phrasensuchen (Phrase Queries) nur noch exakte Treffer markiert werden und bei der Suche in natürlicher Sprache die tatsächliche Abfrage (Query) hervorgehoben wird.

Details zur neuen Version finden sich in den Release Notes auf GitHub.

(fo)