Typesense aus der offiziellen Dokumentation
Übersicht
Dieses Skill enthält, was die Typesense-Dokumentation sagt, aber leicht falsch verstanden werden kann: Was RAM kostet, Import-Ergebnisse, die Fehler hinter HTTP 200 verstecken, Filter-Priorität, Standardwerte, die Ergebnisse aufweichen, Lecks bei Scoped Search Keys, Hybrid Search-Gewichtung und den Wechsel zu Synonym-Sets und Kurations-Sets in v30. Allgemeine Such- und Datenbankhinweise bleiben außen vor. Jede Behauptung enthält die URL der Dokumentation, aus der sie stammt.
Abgedeckte Version
Typesense Server 30.2, mit dem JavaScript-Client für Codebeispiele. Server-Flags gelten für selbst gehostete Server. Typesense Cloud verwaltet sie. Bevor Sie Code für einen älteren Server überprüfen, lesen Sie „Alte Muster“ weiter unten.
Navigation
- Lesen Sie die Kurzanleitung unten. Sie behandelt die Regeln, die bei den meisten Aufgaben wichtig sind.
- Öffnen Sie die eine Referenzdatei, deren Bereich zur Aufgabe passt, aus der Tabelle am Ende. Jede Datei steht für sich.
- Jede Behauptung endet mit ihrer Quell-URL. Rufen Sie sie erneut auf, wenn ein Detail über das Ergebnis entscheidet.
Kurzanleitung
Schema und Speicher
- Jedes Feld im Schema wird im RAM indiziert. Nur-Anzeige-Felder bleiben außerhalb des Schemas (werden trotzdem gespeichert und zurückgegeben) oder erhalten
index: false. Bevorzugen Sie ein vordefiniertes Schema gegenüber der.*-Autoerkennung. https://typesense.org/docs/30.2/api/collections.html und https://typesense.org/docs/guide/running-in-production.html - Kein Datumstyp: Unix-Zeitstempel als
int64speichern.geopointist[lat, lng], niemals GeoJSON-Reihenfolge. https://typesense.org/docs/30.2/api/collections.html und https://typesense.org/docs/30.2/api/geosearch.html facet: truewird fürfacet_byundgroup_bybenötigt. String-Sortierung benötigtsort: true. https://typesense.org/docs/30.2/api/search.html- Ein Alter blockiert alle Schreibvorgänge in die Collection. Standard für Schemaänderungen: eine neue versionierte Collection, Neuindizierung, dann den Alias, den die App immer verwendet, umbiegen. https://typesense.org/docs/30.2/api/collections.html
- Sonderzeichen werden entfernt und die Übereinstimmung erfolgt nur per Präfix: SKUs, E-Mails und URLs benötigen
token_separators. https://typesense.org/docs/guide/tips-for-searching-common-types-of-data.html
Daten schreiben
- Standard: Import (JSONL) mit
action: 'upsert'.upsertersetzt das gesamte Dokument,emplaceoderupdateakzeptieren partielle. https://typesense.org/docs/30.2/api/documents.html - Import antwortet IMMER mit HTTP 200. Jede Ergebniszeile auf
success: falseprüfen, mitreturn_id=true. https://typesense.org/docs/30.2/api/documents.html und https://typesense.org/docs/guide/faqs.html - Setzen Sie Ihre eigene
idals String. Geben Sie Imports ein Client-Timeout von mindestens 5 Minuten (der Sync-Guide sagt bis zu 60 Minuten für große Batches) und wiederholen Sie nie einen noch laufenden Schreibvorgang. https://typesense.org/docs/30.2/api/documents.html und https://typesense.org/docs/guide/syncing-data-into-typesense.html 503 Not Ready or Laggingist Schreib-Gegendruck: Schreibvorgänge bündeln, CPU erhöhen, mit Jitter wiederholen. https://typesense.org/docs/guide/syncing-data-into-typesense.html
Suchen
filter_bybenötigt den Doppelpunkt:price:>=100.:stimmt mit Wörtern überein,:=mit dem gesamten Wert.&&und||haben eine gemeinsame Priorität, daher Klammern setzen. Backticks escapen Werte mit Kommas oder Klammern. https://typesense.org/docs/guide/tips-for-filtering.html- Bedingungen für dasselbe Objekt in einem
object[]:ingredients.{name:=cheese && concentration:<50}. https://typesense.org/docs/guide/tips-for-filtering.html drop_tokens_thresholdundtypo_tokens_thresholdhaben Standardwert 1, daher lässt eine Abfrage mit wenigen Treffern stillschweigend Wörter weg oder fügt Tippfehler hinzu. Alle Wörter erzwingen mitdrop_tokens_threshold: 0. Tippfehler deaktivieren mitnum_typos: 0UNDtypo_tokens_threshold: 0. https://typesense.org/docs/guide/ranking-and-relevance.htmlmax_candidateshat Standardwert 4. Kurze Abfragen verfehlen Datensätze, wenn Sie ihn nicht erhöhen oder ein Popularitäts-default_sorting_fieldsetzen. https://typesense.org/docs/30.2/api/search.html- Relevanz und Popularität mischen:
_text_match(buckets: 10):desc,popularity:desc. Boost ohne Filterung:_eval(in_stock:true):desc. https://typesense.org/docs/guide/ranking-and-relevance.html - Maximal 250 Treffer pro Seite.
group_bygibtgrouped_hitsund ein ungefähresfoundzurück. https://typesense.org/docs/30.2/api/search.html union: truebei Multi-Search ignoriert die suchspezifische Paginierung und benötigt identische Sortierfeldtypen. https://typesense.org/docs/30.2/api/federated-multi-search.html
Vektor- und KI-Suche
- Vektorabfragen laufen über
multi_search, immer mitexclude_fieldsauf dem Vektorfeld. Ergebnisse mitkoderdistance_thresholdbegrenzen. https://typesense.org/docs/30.2/api/vector-search.html - Hybrid:
query_by: 'title,embedding'. Fusion ist 0,7 Keyword und 0,3 Vektor, undalphainvector_queryist das VEKTOR-Gewicht.query_by_weightsbenötigt einen Platzhalter0für das Embedding-Feld. https://typesense.org/docs/30.2/api/vector-search.html - RAG:
conversation=truemitexclude_fields: 'embedding', oder rohe Floats füllen den LLM-Kontext. https://typesense.org/docs/30.2/api/conversational-search-rag.html
Schlüssel und Multi-Tenancy
- Niemals den Bootstrap-Key in Apps verwenden. Niemals Admin-Keys oder das Elternteil von Scoped Search Keys offenlegen. https://typesense.org/docs/guide/data-access-control.html
- Scoped Search Key: Elternteil mit nur
documents:search, serverseitig pro Benutzer generiert, Einbettung vonfilter_byUNDfilter_curated_hits: true, sonst leaken gepinnte und kuratierte Treffer über Mandanten hinweg. https://typesense.org/docs/30.2/api/api-keys.html und https://typesense.org/docs/30.2/api/curation.html collectionsauf einem Schlüssel schränkt globale Endpunkte (keys,synonym_sets,stopwords) nicht ein. Ein Referenzfeld gibt die referenzierte Collection durch Joins preis. https://typesense.org/docs/30.2/api/api-keys.html
Betrieb
- Produktion: 3 oder 5 Knoten HA, Clients mit jedem Knoten konfiguriert (plus
nearestNodehinter einem Load Balancer), RAM unter 85%. https://typesense.org/docs/guide/high-availability.html und https://typesense.org/docs/guide/running-in-production.html - Backup mit
/operations/snapshot, niemals durch Kopieren des Live-Datenverzeichnisses. Zuerst Follower aktualisieren, zuletzt den Leader. https://typesense.org/docs/guide/backups.html und https://typesense.org/docs/guide/updating-typesense.html
Alte Muster
| Alt | Aktuell | Quelle |
|---|---|---|
/collections/{c}/synonyms, synonyms:*-Schlüsselaktionen | /synonym_sets, synonym_sets:* und synonym_sets/items:*, verknüpft durch Collection synonym_sets | https://typesense.org/docs/30.2/api/synonyms.html |
/collections/{c}/overrides, overrides:* | /curation_sets, curation_sets:* und curation_sets/items:* | https://typesense.org/docs/30.2/api/curation.html |
override_tags | curation_tags | https://typesense.org/docs/30.2/api/curation.html |
Analytics-Regeln mit params.source und params.destination | Top-Level collection, event_type, flache params | https://typesense.org/docs/30.2/api/analytics-query-suggestions.html |
eine Counter-Regel mit gewichteten source.events | eine Regel pro Ereignistyp mit params.weight | https://typesense.org/docs/30.2/api/analytics-query-suggestions.html |
exaktes found mit group_by | ungefähr, group_max_candidates für Genauigkeit | https://typesense.org/docs/30.2/api/search.html |
| LLM-Aufruf in der App zum Erstellen von Filtern | nl_search_models + nl_query=true | https://typesense.org/docs/guide/natural-language-search.html |
| abgeflachte verschachtelte Objekte | enable_nested_fields | https://typesense.org/docs/guide/tips-for-searching-common-types-of-data.html |
eine Collection mit document_type für eine gemischte Liste | multi_search mit union: true | https://typesense.org/docs/guide/faqs.html |
altes highlights-Array | highlight-Objekt, enable_highlight_v1=false | https://typesense.org/docs/30.2/api/search.html |
Schlüssel können nicht aktualisiert werden: Ersetzen Sie alte Schlüssel durch Erstellen neuer. Selbst gehostete Server erstellen vor dem Upgrade einen Snapshot, damit Synonyme und Overrides migrieren. https://typesense.org/docs/30.2/api/synonyms.html
Referenzdateien
| Datei | Lesen Sie sie für |
|---|---|
| references/schema-and-collections.md | Feldparameter und Standardwerte, Typen, RAM-Kosten, Auto-Schema, verschachtelte Objekte, Alter, Aliase, Clone, Collection-Layout |
| references/tokenization-locale-stemming.md | token_separators, symbols_to_index, Infix, SKU-, E-Mail- und URL-Rezepte, Locale und Diakritika, Stemming-Wörterbücher |
| references/documents-and-import.md | IDs, Import-Aktionen, Lesen von Import-Ergebnissen, Timeouts, dirty_values, Update, Delete und Export per Abfrage |
| references/syncing-and-reindexing.md | Sync-Strategien aus einer Datenbank, hochvolumige Schreibvorgänge, 503- und Ressourcenfehler, Alias-Neuindizierung |
| references/search-parameters.md | q, query_by, Tipptoleranz, Token-Dropping, Präfix, max_candidates, Highlighting, Paginierung, Cache, Presets |
| references/filtering-and-geo.md | filter_by-Syntax, Priorität, Escaping, Arrays, verschachtelte Objekte, leere Werte, Geo-Filter und -Sortierungen |
| references/ranking-and-sorting.md | Standard-Ranking, sort_by, text_match_type, Buckets, _eval, Abklingung, fehlende Werte, Anpinnen |
| references/faceting-grouping-multi-search.md | Facetten und Strategien, group_by, föderierte und Union-Multi-Search, boolesche Tag-Suche |
| references/synonyms-curation-stopwords.md | Synonym-Sets, Kurations-Sets, Tags, dynamische Regeln, Kuration mit Scoped Search Keys, Stoppwörter |
| references/vector-and-hybrid-search.md | Vektorfelder, Auto-Embedding-Modelle, vector_query, Hybrid-Fusion und alpha, HNSW, Speicher |
| references/conversational-nl-image-voice.md | RAG-Konversationsmodelle, natürlichsprachliche Suche, Bild- und Sprachabfragen, Empfehlungen |
| references/api-keys-and-access-control.md | Schlüsseltypen, Aktionen, Scope-Fallstricke, Scoped Search Keys, Multi-Tenancy-Muster, Rotation |
| references/clients-and-errors.md | Client-Bibliotheken, Knoten- und Load-Balancer-Konfiguration, JS-Tuning, Cache, Fehlercodes, langsame Suchen |
| references/server-configuration.md | Server-Flags und Standardwerte, CORS, TLS, Logging, Ressourcengrenzen, Analytics-Flags, Installationshinweise |
| references/cluster-ha-backups-upgrades.md | HA-Cluster, Nodes-Datei, Recovery, Operations-API, Monitoring, Backups, Upgrades, Dimensionierung, CI |
| references/analytics-and-query-suggestions.md | Analytics-Regeln und Ereignisse, beliebte und Null-Treffer-Abfragen, Counter, Log-Regeln, Vorschläge |
| references/joins-and-personalization.md | Referenzfelder, gejointe Includes, Filter und Sortierungen, Left- und Anti-Joins, asynchrone Referenzen, Personalisierung |
| references/ui-and-algolia-migration.md | InstantSearch-Adapter, Algolia-Unterschiede, Konzeptabbildung, Migrationsschritte |
Quellen und Abrufdetails sind in SOURCES.md aufgelistet.