Übersicht
Hybride Suche in Fess kombiniert die klassische Schlüsselwortsuche (BM25) mit semantischer (Vektor-)Suche und führt beide Ergebnismengen mit Rank Fusion zu präziseren, relevanteren Rankings zusammen. Rank Fusion integriert die Ergebnisse mehrerer Sucher zu einem einzigen optimierten Ranking.
In Fess 15.9 wird die semantische Suche (Content-Chunking + Vektorsuche) als Kernfunktion bereitgestellt. Sobald Sie sie aktivieren, wird der semantische Sucher automatisch bei Rank Fusion registriert. Siehe Semantische Suche (Content-Chunking + Vektorsuche) zur Konfiguration.
Die Rank Fusion-Funktion von Fess integriert mehrere Suchergebnisse, um genauere Suchergebnisse zu liefern.
Was ist Rank Fusion
Rank Fusion ist eine Technik, die Ergebnisse aus mehreren Suchalgorithmen oder Bewertungsmethoden (zum Beispiel Schlüsselwort-/BM25- und semantische/Vektor-Suche) kombiniert, um ein einzelnes optimiertes Ranking zu generieren.
Hauptvorteile:
Kombiniert die Stärken verschiedener Algorithmen
Verbessert die Suchgenauigkeit
Liefert vielfältige Suchergebnisse
Unterstützte Algorithmen
Fess unterstützt den RRF (Reciprocal Rank Fusion)-Algorithmus für Rank Fusion.
RRF (Reciprocal Rank Fusion)
RRF berechnet einen Score durch Summierung des Kehrwerts der Rangposition jedes Dokuments in jedem Suchergebnis. Wenn ein Dokument von mehreren Suchern abgerufen wird, werden seine Scores addiert.
Formel:
k: Konstanter Parameter, der den Einfluss des Rangs steuert (Standard: 20)rank(d): Rang des Dokuments d in jedem Suchergebnis (0-basiert)Σ: Summe über alle Sucher, in denen Dokument d vorkommt
Bemerkung
Führt Fess die Fusion durch (Standard), ist der Algorithmus fest auf RRF eingestellt und es wird keine Gewichtung einzelner Sucher unterstützt — der Beitrag jedes Suchers geht mit demselben Gewicht in die Summe ein, und die einzige Stellschraube für die Ranking-Tendenz ist rank.fusion.rank_constant. Führt die Suchmaschine die Fusion durch, stehen andere Kombinationsverfahren und Gewichte pro Sucher zur Verfügung (siehe Rank Fusion in der Suchmaschine).
Einstellungen
fess_config.properties
Grundkonfiguration:
| Eigenschaft | Standard | Beschreibung |
|---|---|---|
rank.fusion.window_size | 200 | Maximale Anzahl der Ergebnisse, die von jedem Sucher für die Fusion abgerufen werden. Muss >= paging.search.page.max.size × 2 (standardmäßig 200) sein; bei einem kleineren Wert wird dieser automatisch auf dieses Minimum angehoben (beim Start wird dazu eine WARN-Meldung protokolliert). |
rank.fusion.rank_constant | 20 | Die Konstante k in der RRF-Formel. Ein größerer Wert verringert den Score-Unterschied zwischen höher und niedriger platzierten Ergebnissen. |
rank.fusion.threads | -1 | Anzahl der Threads des festen Thread-Pools, der mehrere Sucher parallel ausführt. Bei Angabe von 0 oder kleiner wird automatisch Anzahl verfügbarer CPU-Kerne × 3 ÷ 2 + 1 verwendet (die Berechnung erfolgt in Ganzzahlarithmetik, Nachkommastellen werden also abgeschnitten; Beispiel: 4 Kerne → 7, 5 Kerne → 8). |
rank.fusion.score_field | rf_score | Name des Ergebnisdokument-Felds, in dem der fusionierte Score gespeichert wird. |
Bemerkung
Wann Änderungen wirksam werden
Alle vier oben genannten Einstellungen erfordern einen Neustart von Fess, damit eine Änderung wirksam wird. Aus fess_config.properties gelesene Werte werden innerhalb der JVM zwischengespeichert; ein Bearbeiten der Datei im laufenden Betrieb bleibt daher wirkungslos.
Ergänzend: rank.fusion.window_size wird nur einmal beim Start gelesen, rank.fusion.threads beim Anlegen des Thread-Pools. Der Thread-Pool wird angelegt, sobald ein anderer Sucher als default (etwa der semantische Sucher) registriert wird; ist die semantische Suche deaktiviert, wird der Thread-Pool gar nicht erst angelegt.
JVM-Systemeigenschaften
Die zu verwendenden Sucher werden als JVM-Systemeigenschaft angegeben. Fügen Sie Folgendes zu fess.in.sh hinzu:
Bei fess.in.bat lautet der Eintrag wie folgt:
Diese Eigenschaft verhält sich wie folgt:
Sie wird als JVM-Option gesetzt, nicht in
fess_config.properties. Geben Sie als Schlüssel genaurank.fusion.searchersan. Die bei anderen Einstellungen gebräuchlichen Formen mit vorangestelltem-Dfess.config.oder-Dfess.system.(etwa-Dfess.config.rank.fusion.searchers) werden nicht erkannt.Anstelle einer JVM-Option können Sie den Wert auch in der Verwaltungsoberfläche unter „System > Allgemein“ im Feld „Systemeigenschaften“ als einzelne Zeile eintragen, etwa
rank.fusion.searchers=default,semantic_chunk. Beachten Sie jedoch, dass ein Wert in diesem Feld nur angewendet wird, wenn noch keine gleichnamige Systemeigenschaft gesetzt ist. Eine Angabe per-Dhat also Vorrang, und um einen bereits angewendeten Wert zu ändern, ist ein Neustart von Fess erforderlich.defaultist der Sucher, der die Standard-Schlüsselwortsuche ausführt, und ist stets verfügbar.Der Name eines Suchers leitet sich vom Namen seiner Implementierungsklasse ab: Das abschließende
Searcherwird entfernt und der Rest in Snake Case in Kleinbuchstaben umgewandelt (SemanticChunkSearcher→semantic_chunk). Der im Kern integrierte semantische Sucher (Semantische Suche (Content-Chunking + Vektorsuche)) wird unter dem Namensemantic_chunkregistriert.Wird diese Eigenschaft nicht angegeben, werden alle registrierten Sucher verwendet. Stimmt keiner der angegebenen Namen mit einem registrierten Sucher überein, wird nur der
default-Sucher verwendet. Wenn Sie den im Kern integrierten semantischen Sucher (Semantische Suche (Content-Chunking + Vektorsuche)) verwenden, müssen Sie diese Eigenschaft normalerweise überhaupt nicht setzen.Die Ergebnisfusion durch Rank Fusion wird nur ausgeführt, wenn zwei oder mehr Sucher verfügbar sind. Bei nur einem verfügbaren Sucher wird keine Fusion durchgeführt und normale Suchergebnisse werden zurückgegeben.
Warnung
Wenn Sie zuvor das Plugin fess-webapp-semantic-search aus Fess 15.7 oder früher genutzt haben, wurde Ihnen möglicherweise empfohlen, diese Eigenschaft auf -Drank.fusion.searchers=default,semantic zu setzen. Dieses Plugin registrierte seinen Sucher unter dem Namen semantic, was ein anderer Sucher ist als der in 15.9 eingeführte Name des im Kern integrierten Suchers, semantic_chunk. Wenn Sie diese Einstellung aus der 15.7-Ära unverändert nach 15.9 übernehmen, enthält die Allowlist niemals semantic_chunk, sodass die im Kern integrierte semantische Suche (Content-Chunking + Vektorsuche) überhaupt nicht funktioniert — Fess liefert stillschweigend weiterhin gewöhnliche Schlüsselwortsuchergebnisse (beim Start wird zwar eine Warnung protokolliert, aber der Ausschluss pro Anfrage selbst wird nur auf DEBUG-Ebene protokolliert). Wenn Ihre Konfiguration default,semantic angibt, entfernen Sie diese Einstellung entweder oder fügen Sie semantic_chunk hinzu. Siehe „Migration von 15.7 oder früheren Versionen“ in Semantische Suche (Content-Chunking + Vektorsuche) für Details.
Rank Fusion in der Suchmaschine
Mit rank.fusion.engine.enabled=true führt OpenSearch statt Fess die Fusion durch. Die Anfragen der Sucher werden zu einer einzigen Suchanfrage (einer hybrid-Abfrage) zusammengefasst, und eine OpenSearch-Such-Pipeline normalisiert und kombiniert die Scores. Da die Fusion in einer einzigen Anfrage erfolgt, beziehen sich auch die Gesamttrefferzahl und die Facettenzahlen auf die fusionierte Ergebnismenge.
Dafür ist das OpenSearch-Plugin neural-search erforderlich. Es ist in der Standarddistribution von OpenSearch und im Image ghcr.io/codelibs/fess-opensearch enthalten, nicht jedoch in der Minimaldistribution.
Die Einstellungen gehören in fess_config.properties (eine Änderung erfordert einen Neustart von Fess):
| Eigenschaft | Standard | Beschreibung |
|---|---|---|
rank.fusion.engine.enabled | false | Bei true führt die Suchmaschine die Fusion durch. |
rank.fusion.combination.technique | rrf | Wie die Scores kombiniert werden: rrf, arithmetic_mean, geometric_mean oder harmonic_mean. Bei rrf wird rank.fusion.rank_constant als Konstante k verwendet, sodass sich dieselbe Formel ergibt wie bei der Fusion durch Fess. |
rank.fusion.normalization.technique | min_max | Wie die Scores vor dem Kombinieren normalisiert werden: min_max, l2 oder z_score. Wird von rrf nicht verwendet. |
rank.fusion.combination.weights | (leer) | Gewicht pro Sucher als kommagetrennte name:weight-Paare (zum Beispiel default:0.7,semantic_chunk:0.3). Jedes Gewicht muss zwischen 0.0 und 1.0 liegen, die Gewichte müssen in der Summe 1.0 ergeben, und jeder an der Fusion beteiligte Sucher muss genannt werden. Bei leerem Wert werden die Sucher gleich gewichtet. Ein Wert, der diese Regeln nicht erfüllt, wird mit einer ERROR-Meldung protokolliert, und diese Suche wird von Fess fusioniert. |
rank.fusion.pagination_depth | 1000 | Wie viele Ergebnisse jeder Sucher pro Shard zur Fusion beiträgt. Der Wert begrenzt, wie tief ein Client blättern kann, sowie die Menge der fusionierten Dokumente: Eine in der Suchmaschine fusionierte Suche kann höchstens so viele Ergebnisse durchblättern. Der an die Suchmaschine gesendete Wert überschreitet nie indexer.max.result.window.size. |
Bemerkung
Die Normalisierung z_score lässt sich nur mit arithmetic_mean kombinieren. Dies ist eine Einschränkung des Plugins neural-search. Wird sie mit geometric_mean oder harmonic_mean kombiniert, lehnt Fess diese Kombination ab, protokolliert eine ERROR-Meldung, die beide Einstellungen nennt, und fusioniert diese Suche selbst.
In den folgenden Fällen führt die Suchmaschine die Fusion nicht durch, und stattdessen fusioniert Fess die Ergebnisse.
Eine Suche mit Parametern der erweiterten Suche (
as.*)Eine Suche mit Angabe einer Sortierreihenfolge, eine Geolokalisierungssuche oder eine Suche nach ähnlichen Dokumenten. Diese überspringen die semantische Suche vollständig, sodass nur Ergebnisse der Schlüsselwortsuche zurückgegeben werden (siehe Semantische Suche (Content-Chunking + Vektorsuche)).
Ein Wert von
rank.fusion.combination.weights, der die obigen Regeln nicht erfülltDie Normalisierung
z_scorein Kombination mitgeometric_meanoderharmonic_mean(eine ERROR-Meldung nennt beide Einstellungen)Die Suchmaschine kann fusionierte Anfragen überhaupt nicht ausführen: Sie kennt die
hybrid-Abfrage oder den Prozessor der Such-Pipeline nicht, zum Beispiel weil das Plugin neural-search fehlt oder zu alt ist. Für jede solche Suche wird eine WARN-Meldung protokolliert. Die nächste Suche wird wieder an die Suchmaschine gerichtet, sodass die Fusion in der Suchmaschine ohne Neustart von Fess wieder aufgenommen wird, sobald das Plugin installiert oder aktualisiert ist.
Jeder andere Fehler einer fusionierten Anfrage (eine ungültige Abfrage, ein geschlossener Index, ein Shard-Fehler usw.) wird nur für diese Suche gemeldet, genau wie ohne Fusion in der Suchmaschine, und die nächste Suche wird wieder von der Suchmaschine fusioniert.
Beachten Sie Folgendes, wenn die Suchmaschine die Fusion durchführt.
rank.fusion.timeoutgilt nicht. Das Embedding der Anfrage wird synchron berechnet, bevor die Suchanfrage gesendet wird; ein langsamer oder nicht antwortender Embedding-Anbieter verzögert die Suche daher bis zum Timeout des Anbieters selbst (zum Beispielcontent_chunker.embedding.ollama.timeout). Wiederholt der Anbieter Anfragen, verlängern die Wiederholungen diese Zeit. Der integrierte Anbieteropensearchwiederholt zum Beispiel das Warten voncontent_chunker.embedding.opensearch.timeout(Standardwert60000ms) bis zucontent_chunker.embedding.opensearch.retry.max(Standardwert3) Mal, sodass ein nicht antwortender Anbieter eine Suche standardmäßig um 180 Sekunden plus die Wartezeiten zwischen den Wiederholungen verzögern kann.rank.fusion.window_sizeundrank.fusion.threadswerden nur verwendet, wenn Fess die Fusion durchführt.Eine fusionierte Suche kann höchstens
rank.fusion.pagination_depthErgebnisse durchblättern, weil die Suchmaschine nur die erstenrank.fusion.pagination_depthErgebnisse jedes Suchers pro Shard fusioniert. Seitenanzahl, Link zur nächsten Seite und Seitennummern enden dort, und eine Seite, deren Startposition (start)rank.fusion.pagination_depthoder mehr beträgt, wird mit demselben Fehler abgelehnt wie bei jeder anderen Suche eine Seite jenseits vonindex.max_result_window(in der Such-API v2 HTTP 400 mitinvalid_request). Eine Seite, die nach dem letzten fusionierten Ergebnis, aber innerhalb dieser Grenze beginnt (zum Beispiel über einen veralteten Link), wird leer zurückgegeben. Suchen, die nicht in der Suchmaschine fusioniert werden, lassen sich wie bisher bisindex.max_result_windowdurchblättern.Die Gesamttrefferzahl ist exakt, solange sie unter
rank.fusion.pagination_depthliegt. Ab diesem Wert kann die Suchmaschine weniger Treffer zählen, als tatsächlich übereinstimmen; die Zahl wird daher als Untergrenze gemeldet (in der Such-API istrecord_count_relationdannGREATER_THAN_OR_EQUAL_TO).Ein höherer Wert für
rank.fusion.pagination_deptherlaubt tieferes Blättern, aber jede fusionierte Suche sammelt so viele Ergebnisse pro Sucher und Shard; das verlangsamt jede Suche, nicht nur tiefe Seiten.Das
kder knn-Abfrage des semantischen Suchers (die Anzahl der Nachbarn pro Shard) istcontent_chunker.search.knn.k. Eine Vektorsuche liefert Nachbarn auch dann, wenn ihre Ähnlichkeit gering ist; ohnecontent_chunker.search.min_scoreenthält die Gesamttrefferzahl daher diese Vektortreffer, und bei einem kleinen Index kann sie die meisten für den Benutzer sichtbaren Dokumente umfassen. Setzen Siecontent_chunker.search.min_score, um sie einzugrenzen (siehe Semantische Suche (Content-Chunking + Vektorsuche)).Das Feld
searcherwird den Ergebnissen wie gewohnt hinzugefügt,rf_scorejedoch nicht.
Integration mit Hybridsuche
Rank Fusion ist besonders effektiv bei der Hybridsuche, die Schlüsselwortsuche und semantische Suche kombiniert. Um die semantische Suche zu nutzen, konfigurieren Sie die Content-Chunking-Funktion und setzen Sie anschließend content_chunker.search.enabled=true.
Warnung
Die Einstellungen unter content_chunker.* — etwa content_chunker.enabled oder content_chunker.search.enabled — sind Systemeigenschaften und gehören nicht in fess_config.properties. Tragen Sie sie in conf/system.properties ein oder geben Sie sie als JVM-Option an, zum Beispiel -Dfess.system.content_chunker.search.enabled=true. Einträge in fess_config.properties bleiben wirkungslos. Zudem wird content_chunker.search.enabled nur beim Start ausgewertet; nach dem Aktivieren ist daher ein Neustart von Fess erforderlich.
Siehe Semantische Suche (Content-Chunking + Vektorsuche) für Details.
Fusionsergebnisse überprüfen
Ob Rank Fusion tatsächlich arbeitet, erkennen Sie an den beiden folgenden Feldern, die den Suchergebnissen hinzugefügt werden.
| Feld | Inhalt |
|---|---|
searcher | Array mit den Namen der Sucher, die dieses Dokument abgerufen haben (Beispiel: ["default", "semantic_chunk"]). Sind beide enthalten, wurde das Dokument sowohl von der Schlüsselwortsuche als auch von der semantischen Suche gefunden. |
rf_score | Der mit RRF berechnete fusionierte Score. Der Feldname lässt sich über rank.fusion.score_field ändern. |
Beide Werte werden zur Suchzeit dynamisch hinzugefügt und nicht im Index gespeichert. Da sie standardmäßig nicht in der Antwort von /api/v2/search enthalten sind, nehmen Sie zum Überprüfen die folgende Einstellung in fess_config.properties vor und starten Sie Fess neu:
Bemerkung
query.additional.api.response.fields fügt der Allowlist der Felder Einträge hinzu, die in der Antwort der v2-Such-API enthalten sein dürfen. Nehmen Sie dort keine Felder der Zugriffskontrolle wie role oder virtual_host auf, da sonst Informationen zur Zugriffskontrolle in der Antwort der Such-API offengelegt werden.
Auswirkungen auf die Trefferzahl
Führt Fess Rank Fusion durch, entspricht die zurückgegebene Gesamttrefferzahl nicht unverändert der Trefferzahl des Hauptsuchers (des an erster Stelle registrierten default-Suchers), sondern wird wie folgt korrigiert:
Der Korrekturwert ist die Anzahl derjenigen Dokumente unter den obersten window_size ÷ 2 Ergebnissen nach der Fusion, die nicht in den obersten window_size ÷ 2 Ergebnissen des Hauptsuchers enthalten waren. Die Trefferzahl erhöht sich also genau um die Dokumente, die nur die semantische Suche gefunden hat. Daher kann sich die Trefferzahl bei derselben Anfrage unterscheiden, je nachdem, ob die Hybridsuche aktiviert ist oder nicht.
Wird die Gesamttrefferzahl des Hauptsuchers als Näherungswert (Untergrenze) zurückgegeben, findet diese Korrektur nicht statt. Die Facettenzahlen (Labels usw.) werden ebenfalls unverändert aus den Ergebnissen des Hauptsuchers übernommen.
Führt die Suchmaschine die Fusion durch (siehe Rank Fusion in der Suchmaschine), umfassen die Gesamttrefferzahl und die Facettenzahlen die Vereinigungsmenge der Treffer von Schlüsselwortsuche und semantischer Suche. Jeder Sucher liefert höchstens rank.fusion.pagination_depth Ergebnisse pro Shard, und der semantische Sucher ist zusätzlich auf content_chunker.search.knn.k begrenzt. Daher meldet dieselbe Anfrage je nach rank.fusion.engine.enabled unterschiedliche Trefferzahlen und Facettenzahlen, und bei einem kleinen Index fallen sie tendenziell größer aus, wenn die Suchmaschine die Fusion durchführt, weil die semantische Suche ihre Treffer beisteuert.
Anwendungsbeispiele
Grundlegende Hybridsuche
BM25-Score mit Schlüsselwortsuche berechnen
Vektorähnlichkeit mit semantischer Suche berechnen
Beide Ergebnisse mit RRF fusionieren
Endgültiges Ranking generieren
Suchablauf:
Leistungsüberlegungen
Speicherverbrauch
Der Speicherverbrauch steigt, da mehrere Suchergebnisse vorgehalten werden.
Verwenden Sie
rank.fusion.window_size, um die maximale Anzahl der zu fusionierenden Ergebnisse zu begrenzen. Der Hauptsucher (der führendedefault-Sucher) ruft bis zuwindow_sizeErgebnisse ab, während jeder der anderen Sucherwindow_size ÷ Anzahl der SucherErgebnisse abruft (dieAnzahl der Sucherist die Gesamtzahl einschließlich des Hauptsuchers, und die Division wird abgerundet).Gibt es beispielsweise zwei Sucher (
defaultundsemantic_chunk) und giltwindow_size=200, so ruft der Hauptsucher 200 und der semantische Sucher 100 Ergebnisse ab; es werden also maximal 300 Dokumente vorgehalten.
Warnung
rank.fusion.window_size kann paging.search.page.max.size × 2 nicht unterschreiten. Steht paging.search.page.max.size auf dem Standardwert 100, liegt die Untergrenze bei 200 und damit genau beim Standardwert von rank.fusion.window_size. Das bedeutet: In der Standardkonfiguration lässt sich window_size gar nicht unter den Standardwert senken. Ein kleinerer Wert führt beim Start lediglich zu einer WARN-Meldung und wird auf 200 angehoben. Um den Wert tatsächlich zu verringern, müssen Sie zuerst paging.search.page.max.size senken; damit sinkt jedoch zugleich die maximale Anzahl an Ergebnissen, die im Suchbildschirm oder über die API pro Seite angefordert werden kann.
Verarbeitungszeit
Die Antwortzeit steigt, da mehrere Suchen ausgeführt werden.
Verwenden Sie
rank.fusion.threads, um die Anzahl der Threads für die parallele Ausführung festzulegen.
Bemerkung
Führt Fess die Fusion durch, wird auf andere Sucher als den Hauptsucher bis zu rank.fusion.timeout Millisekunden (Standard 10000) gewartet. Ein Sucher, der bis dahin nicht geantwortet hat, wird bei dieser Suche ausgelassen, und die Ergebnisse werden als unvollständig (Zeitüberschreitung) gekennzeichnet. Auf den Hauptsucher wird stets gewartet. Bei 0 oder kleiner wird ohne Begrenzung gewartet. Diese Einstellung gilt nicht, wenn die Suchmaschine die Fusion durchführt (siehe Rank Fusion in der Suchmaschine).
Verhalten bei Fehlern eines Suchers
Schlägt einer der Sucher mit einer Ausnahme fehl, wird sein Ergebnis als leer behandelt; es wird eine WARN-Meldung protokolliert und die Fusion mit den Ergebnissen der übrigen Sucher fortgesetzt. Die Suchanfrage selbst schlägt dadurch nicht fehl.
Ausgenommen davon sind Syntaxfehler in der Anfrage (InvalidQueryException) und das Überschreiten der Paging-Obergrenze (ResultOffsetExceededException) — diese werden unverändert als Fehler zurückgegeben. Zudem wird bei tiefen Seiten, auf denen keine Fusion durchgeführt wird (wo Startposition × 2 größer oder gleich rank.fusion.window_size ist), eine im Hauptsucher aufgetretene Ausnahme unverändert als Fehler der Suchanfrage zurückgegeben.
Kann der semantische Sucher den Embedding-Anbieter nicht erreichen oder schlägt die Embedding-Verarbeitung fehl, gibt er ein leeres Ergebnis zurück. Auch in diesem Fall tritt kein Fehler auf; zurückgegeben werden dann nur die Ergebnisse der Schlüsselwortsuche.
Fehlersuche
Suchergebnisse weichen von Erwartungen ab
Symptom: Ergebnisse nach Rank Fusion weichen von den Erwartungen ab
Prüfpunkte:
Prüfen Sie das Feld
searcher(siehe „Fusionsergebnisse überprüfen“). Enthält es bei allen Dokumenten nur["default"], liefert der semantische Sucher keine Ergebnisse.Prüfen Sie, ob die semantische Suche übersprungen wird. Neben Anfragen, die Suchsyntax wie Phrasen oder Platzhalter enthalten, liefert der semantische Sucher auch bei sortierten Suchen, bei der Geolokalisierungssuche und bei der Suche nach ähnlichen Dokumenten keine Ergebnisse; zurückgegeben werden dann nur die Ergebnisse der Schlüsselwortsuche. Einzelheiten zu den Bedingungen für das Überspringen finden Sie unter Semantische Suche (Content-Chunking + Vektorsuche).
Ergebnisse jedes Suchtyps einzeln überprüfen
Den Wert von
rank.fusion.rank_constantanpassenBei tiefen Seiten (wo
Startposition × 2größer oder gleichrank.fusion.window_sizeist, standardmäßig also ab dem 101. Ergebnis) wird keine Fusion durchgeführt und nur der Hauptsucher wird verwendet. Wenn Sie auf mehr Seiten fusionierte Ergebnisse wünschen, erhöhen Sierank.fusion.window_size. Führt die Suchmaschine die Fusion durch, gibt es diese Grenze nicht: Jede Seite wird fusioniert, bis zurank.fusion.pagination_depthErgebnisse (siehe Rank Fusion in der Suchmaschine).
Suche ist langsam
Symptom: Suche wird bei aktiviertem Rank Fusion langsam
Lösungen:
rank.fusion.threadsanpassen:rank.fusion.window_sizereduzieren. Da der Wert die Untergrenze (paging.search.page.max.size × 2) nicht unterschreiten kann, setzen Sie in der Standardkonfiguration die folgenden beiden Werte gemeinsam:Beachten Sie, dass dadurch auch die maximale Anzahl an Ergebnissen sinkt, die pro Seite angefordert werden kann. Nach der Änderung ist ein Neustart erforderlich.
Führt die Suchmaschine die Fusion durch, reduzieren Sie
rank.fusion.pagination_depth. Dadurch sinkt auch, wie tief fusionierte Ergebnisse durchblättert werden können. Nach der Änderung ist ein Neustart erforderlich.
Speichermangel
Symptom: OutOfMemoryError tritt auf
Lösungen:
rank.fusion.window_sizewie unter „Suche ist langsam“ beschrieben reduzierenJVM-Heap-Größe erhöhen
Referenz
Semantische Suche (Content-Chunking + Vektorsuche) - Konfiguration der semantischen Suche (Content-Chunking)
Skripting-Übersicht - Scripting-Übersicht
Suchbezogene Konfigurationen - Erweiterte Sucheinstellungen
Übersicht über KI-Suchmodus (RAG) und LLM-Integration - LLM-Integrations-Leitfaden (Semantische Suche)