Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion de/15.9/config/properties.po
Original file line number Diff line number Diff line change
Expand Up @@ -1071,7 +1071,7 @@ msgstr ""
msgid "Weight per searcher for engine-side fusion, as name:weight pairs, e.g. default:0.7,semantic_chunk:0.3. The weights must sum to 1.0 and must name every searcher taking part. Empty weights them equally."
msgstr ""

msgid "How many results each searcher contributes per shard to engine-side fusion. This bounds both how deep a client can page and the set of documents the engine ranks."
msgid "How many results each searcher contributes per shard to engine-side fusion. This bounds both how deep a client can page and the set of documents the engine ranks: a fused search pages through this many results, and never more than indexer.max.result.window.size."
msgstr ""

msgid "ACL"
Expand Down
4 changes: 2 additions & 2 deletions de/15.9/config/properties.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1396,8 +1396,8 @@ Index
- Weight per searcher for engine-side fusion, as name:weight pairs, e.g. default:0.7,semantic_chunk:0.3. The weights must sum to 1.0 and must name every searcher taking part. Empty weights them equally.
- (empty)
* - rank.fusion.pagination_depth
- How many results each searcher contributes per shard to engine-side fusion. This bounds both how deep a client can page and the set of documents the engine ranks.
- ``200``
- How many results each searcher contributes per shard to engine-side fusion. This bounds both how deep a client can page and the set of documents the engine ranks: a fused search pages through this many results, and never more than indexer.max.result.window.size.
- ``1000``

.. list-table:: ACL
:header-rows: 1
Expand Down
39 changes: 27 additions & 12 deletions de/15.9/config/rank-fusion.rst
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ von |Fess|)::
rank.fusion.combination.technique=rrf
rank.fusion.normalization.technique=min_max
rank.fusion.combination.weights=
rank.fusion.pagination_depth=200
rank.fusion.pagination_depth=1000

.. list-table::
:header-rows: 1
Expand All @@ -202,8 +202,8 @@ von |Fess|)::
- (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``
- ``200``
- 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.
- ``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``.

.. note::

Expand All @@ -219,10 +219,6 @@ In den folgenden Fällen führt die Suchmaschine die Fusion nicht durch, und sta
- 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 :doc:`search-semantic`).
- Eine Seite, bei der Startposition plus Seitengröße ``rank.fusion.pagination_depth`` überschreitet
(für jede solche Suche wird eine DEBUG-Meldung protokolliert). Die Fusion durch |Fess| wendet dann die
Grenze von ``rank.fusion.window_size`` an, sodass mit den Standardeinstellungen nur Ergebnisse
der Schlüsselwortsuche zurückgegeben werden.
- Ein Wert von ``rank.fusion.combination.weights``, der die obigen Regeln nicht erfüllt
- Die Normalisierung ``z_score`` in Kombination mit ``geometric_mean`` oder ``harmonic_mean`` (eine
ERROR-Meldung nennt beide Einstellungen)
Expand All @@ -244,8 +240,23 @@ Beachten Sie Folgendes, wenn die Suchmaschine die Fusion durchführt.
``content_chunker.embedding.ollama.timeout``).
- ``rank.fusion.window_size`` und ``rank.fusion.threads`` werden nur verwendet, wenn |Fess| die
Fusion durchführt.
- Das ``k`` der knn-Abfrage des semantischen Suchers (die Anzahl der Nachbarn pro Shard) wird zum
größeren der Werte ``content_chunker.search.knn.k`` und ``rank.fusion.pagination_depth``. Eine
- Eine fusionierte Suche kann höchstens ``rank.fusion.pagination_depth`` Ergebnisse durchblättern,
weil die Suchmaschine nur die ersten ``rank.fusion.pagination_depth`` Ergebnisse jedes Suchers pro
Shard fusioniert. Seitenanzahl, Link zur nächsten Seite und Seitennummern enden dort, und eine
Seite, die dahinter beginnt, wird mit demselben Fehler abgelehnt wie bei jeder anderen Suche eine
Seite jenseits von ``index.max_result_window``. 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 bis ``index.max_result_window`` durchblättern.
- Die Gesamttrefferzahl ist exakt, solange sie unter ``rank.fusion.pagination_depth`` liegt. 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 ist ``record_count_relation`` dann
``GREATER_THAN_OR_EQUAL_TO``).
- Ein höherer Wert für ``rank.fusion.pagination_depth`` erlaubt tieferes Blättern, aber jede
fusionierte Suche sammelt so viele Ergebnisse pro Sucher und Shard; das verlangsamt jede Suche,
nicht nur tiefe Seiten.
- Das ``k`` der knn-Abfrage des semantischen Suchers (die Anzahl der Nachbarn pro Shard) ist
``content_chunker.search.knn.k``. Eine
Vektorsuche liefert Nachbarn auch dann, wenn ihre Ähnlichkeit gering ist; ohne
``content_chunker.search.min_score`` enthält die Gesamttrefferzahl daher diese Vektortreffer,
und bei einem kleinen Index kann sie die meisten für den Benutzer sichtbaren Dokumente umfassen.
Expand Down Expand Up @@ -439,9 +450,9 @@ Suchergebnisse weichen von Erwartungen ab
5. Bei tiefen Seiten (wo ``Startposition × 2`` größer oder gleich ``rank.fusion.window_size``
ist, 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
Sie ``rank.fusion.window_size``. Führt die Suchmaschine die Fusion durch, wird eine Seite, bei
der Startposition plus Seitengröße ``rank.fusion.pagination_depth`` überschreitet, stattdessen
von |Fess| fusioniert; erhöhen Sie daher auch ``rank.fusion.pagination_depth``.
Sie ``rank.fusion.window_size``. Führt die Suchmaschine die Fusion durch, gibt
es diese Grenze nicht: Jede Seite wird fusioniert, bis zu ``rank.fusion.pagination_depth``
Ergebnisse (siehe :ref:`rank-fusion-engine`).

Suche ist langsam
-----------------
Expand All @@ -464,6 +475,10 @@ Suche ist langsam
Beachten Sie, dass dadurch auch die maximale Anzahl an Ergebnissen sinkt, die pro Seite
angefordert werden kann. Nach der Änderung ist ein Neustart erforderlich.

3. 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
--------------

Expand Down
13 changes: 6 additions & 7 deletions de/15.9/config/search-semantic.rst
Original file line number Diff line number Diff line change
Expand Up @@ -231,8 +231,8 @@ Einstellungen in system.properties
* - ``content_chunker.search.knn.k``
- ``100``
- Anzahl der pro ANN-Abfrage abgerufenen Nachbarn (wird für Deep Paging automatisch
vergrößert; mindestens ``rank.fusion.pagination_depth``, wenn die Suchmaschine die Fusion
durchführt)
vergrößert, wenn |Fess| die Fusion durchführt; unverändert verwendet, wenn die Suchmaschine
die Fusion durchführt)
* - ``content_chunker.search.knn.param.ef_search``
- (nicht gesetzt)
- Der Parameter ``ef_search`` für ANN-Abfragen
Expand Down Expand Up @@ -625,15 +625,14 @@ Einschränkungen

- Sie wird ebenfalls übersprungen, wenn sie mit der Geolokalisierungssuche (einem Geo-Filter)
oder der Suche nach ähnlichen Dokumenten kombiniert wird.
- Auf tiefen Ergebnisseiten wird Rank Fusion selbst deaktiviert.
- Wie tiefe Ergebnisseiten behandelt werden, hängt davon ab, wo die Fusion stattfindet.

- Führt |Fess| die Fusion durch (Standard), bestimmt ``rank.fusion.window_size`` (Standard
``200``) die Grenze; standardmäßig werden alle Treffer ab dem 101. Suchergebnis nur aus der
Schlüsselwortsuche geliefert.
- Führt die Suchmaschine die Fusion durch (``rank.fusion.engine.enabled=true``), ist die Grenze
``rank.fusion.pagination_depth`` (Standard ``200``). Eine Seite, bei der Startposition plus
Seitengröße diesen Wert überschreitet, wird stattdessen von |Fess| fusioniert, und es gilt die
obige Grenze von ``rank.fusion.window_size``.
- Führt die Suchmaschine die Fusion durch (``rank.fusion.engine.enabled=true``), wird jede
Seite fusioniert, aber das Blättern endet nach ``rank.fusion.pagination_depth`` Ergebnissen
(Standard ``1000``); eine Seite dahinter kann nicht angefordert werden.

Siehe :doc:`rank-fusion` für Details.
- Ist der Embedding-Anbieter nicht erreichbar oder tritt ein Suchfehler auf, fällt |Fess|
Expand Down
4 changes: 2 additions & 2 deletions en/15.9/config/properties.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1396,8 +1396,8 @@ Index
- Weight per searcher for engine-side fusion, as name:weight pairs, e.g. default:0.7,semantic_chunk:0.3. The weights must sum to 1.0 and must name every searcher taking part. Empty weights them equally.
- (empty)
* - rank.fusion.pagination_depth
- How many results each searcher contributes per shard to engine-side fusion. This bounds both how deep a client can page and the set of documents the engine ranks.
- ``200``
- How many results each searcher contributes per shard to engine-side fusion. This bounds both how deep a client can page and the set of documents the engine ranks: a fused search pages through this many results, and never more than indexer.max.result.window.size.
- ``1000``

.. list-table:: ACL
:header-rows: 1
Expand Down
35 changes: 24 additions & 11 deletions en/15.9/config/rank-fusion.rst
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ The settings go in ``fess_config.properties`` (a change requires a restart of |F
rank.fusion.combination.technique=rrf
rank.fusion.normalization.technique=min_max
rank.fusion.combination.weights=
rank.fusion.pagination_depth=200
rank.fusion.pagination_depth=1000

.. list-table::
:header-rows: 1
Expand All @@ -197,8 +197,8 @@ The settings go in ``fess_config.properties`` (a change requires a restart of |F
- (empty)
- Weight per searcher, as comma-separated ``name:weight`` pairs (for example ``default:0.7,semantic_chunk:0.3``). Each weight must be between ``0.0`` and ``1.0``, the weights must sum to ``1.0``, and every searcher taking part in the fusion must be named. Empty weights the searchers equally. A value that does not meet these rules is reported with an ERROR log, and that search is fused by |Fess|.
* - ``rank.fusion.pagination_depth``
- ``200``
- How many results each searcher contributes to the fusion per shard. It bounds how deep a client can page and the set of documents that are fused.
- ``1000``
- How many results each searcher contributes to the fusion per shard. It bounds how deep a client can page and the set of documents that are fused: a search fused in the search engine pages through at most this many results. The value sent to the search engine never exceeds ``indexer.max.result.window.size``.

.. note::

Expand All @@ -212,9 +212,6 @@ instead.
- A search that includes advanced search parameters (``as.*``)
- A search that specifies a sort order, a geolocation search or a similar-document search. These
skip semantic search altogether, so the results are keyword-only (see :doc:`search-semantic`).
- A page whose start position plus page size exceeds ``rank.fusion.pagination_depth`` (a DEBUG log
is written for each such search). Fusion in |Fess| then applies the ``rank.fusion.window_size``
boundary, so with the default settings the results are keyword-only.
- A ``rank.fusion.combination.weights`` value that does not meet the rules above
- ``z_score`` normalization combined with ``geometric_mean`` or ``harmonic_mean`` (an ERROR log
names both settings)
Expand All @@ -235,8 +232,20 @@ Keep the following in mind when the search engine performs the fusion.
provider's own timeout (for example ``content_chunker.embedding.ollama.timeout``).
- ``rank.fusion.window_size`` and ``rank.fusion.threads`` are used only when |Fess| performs the
fusion.
- The ``k`` of the semantic searcher's knn query (the number of neighbors per shard) becomes the
larger of ``content_chunker.search.knn.k`` and ``rank.fusion.pagination_depth``. A vector search
- A fused search pages through at most ``rank.fusion.pagination_depth`` results, because the
search engine fuses only the top ``rank.fusion.pagination_depth`` results of each searcher per
shard. The page count, the next-page link and the page numbers stop there, and a page that
starts beyond it is refused with the same error as a page beyond ``index.max_result_window`` in
any other search. A page that starts after the last fused result but within that limit (for
example, from an outdated link) is returned empty. Searches that are not fused in the search
engine page up to ``index.max_result_window`` as before.
- The total hit count is exact while it is below ``rank.fusion.pagination_depth``. At or above it,
the search engine can count fewer hits than actually match, so the count is reported as a lower
bound (in the search API, ``record_count_relation`` is ``GREATER_THAN_OR_EQUAL_TO``).
- Raising ``rank.fusion.pagination_depth`` lets users page deeper, but every fused search collects
that many results per searcher and shard, so it makes every search slower, not only deep pages.
- The ``k`` of the semantic searcher's knn query (the number of neighbors per shard) is
``content_chunker.search.knn.k``. A vector search
returns neighbors even when their similarity is low, so without
``content_chunker.search.min_score`` the total hit count includes those vector hits, and on a
small index it can cover most of the documents the user can see. Set
Expand Down Expand Up @@ -419,9 +428,9 @@ Search Results Differ from Expectations
5. On deep pages (where ``start position × 2`` is greater than or equal to
``rank.fusion.window_size``, which by default means from the 101st result onward), fusion is
not performed and only the main searcher is used. If you want fused results on more pages,
increase ``rank.fusion.window_size``. When the search engine performs the fusion, a page whose
start position plus page size exceeds ``rank.fusion.pagination_depth`` is fused by |Fess|
instead, so increase ``rank.fusion.pagination_depth`` as well.
increase ``rank.fusion.window_size``. This boundary does not exist when the search
engine performs the fusion: every page is fused, up to ``rank.fusion.pagination_depth``
results (see :ref:`rank-fusion-engine`).

Slow Search
-----------
Expand All @@ -444,6 +453,10 @@ Slow Search
Note that this also lowers the maximum number of results that can be requested per page. A
restart is required after changing these settings.

3. When the search engine performs the fusion, reduce ``rank.fusion.pagination_depth``. This
also lowers how deep users can page through fused results. A restart is required after
changing it.

Out of Memory
-------------

Expand Down
13 changes: 6 additions & 7 deletions en/15.9/config/search-semantic.rst
Original file line number Diff line number Diff line change
Expand Up @@ -221,8 +221,8 @@ system.properties Settings
requires recreating the index)
* - ``content_chunker.search.knn.k``
- ``100``
- Number of neighbors retrieved per ANN query (automatically enlarged for deep paging; at
least ``rank.fusion.pagination_depth`` when the search engine performs the fusion)
- Number of neighbors retrieved per ANN query (automatically enlarged for deep paging when
|Fess| performs the fusion; used as is when the search engine performs the fusion)
* - ``content_chunker.search.knn.param.ef_search``
- (unset)
- The ``ef_search`` parameter for ANN queries
Expand Down Expand Up @@ -589,15 +589,14 @@ Limitations

- It is also skipped when combined with geolocation search (a geo filter) or similar-document
search.
- On deep result pages, Rank Fusion itself is disabled.
- How deep result pages are handled depends on where the fusion is performed.

- When |Fess| performs the fusion (the default), the boundary is determined by
``rank.fusion.window_size`` (default ``200``); by default everything from result 101 onward
is keyword-only.
- When the search engine performs the fusion (``rank.fusion.engine.enabled=true``), the
boundary is ``rank.fusion.pagination_depth`` (default ``200``). A page whose start position
plus page size exceeds it is fused by |Fess| instead, and the ``rank.fusion.window_size``
boundary above applies.
- When the search engine performs the fusion (``rank.fusion.engine.enabled=true``), every
page is fused, but paging stops at ``rank.fusion.pagination_depth`` results (default
``1000``); a page beyond that cannot be requested.

See :doc:`rank-fusion` for details.
- If the embedding provider is unreachable or a search error occurs, |Fess| automatically falls
Expand Down
2 changes: 1 addition & 1 deletion es/15.9/config/properties.po
Original file line number Diff line number Diff line change
Expand Up @@ -1071,7 +1071,7 @@ msgstr ""
msgid "Weight per searcher for engine-side fusion, as name:weight pairs, e.g. default:0.7,semantic_chunk:0.3. The weights must sum to 1.0 and must name every searcher taking part. Empty weights them equally."
msgstr ""

msgid "How many results each searcher contributes per shard to engine-side fusion. This bounds both how deep a client can page and the set of documents the engine ranks."
msgid "How many results each searcher contributes per shard to engine-side fusion. This bounds both how deep a client can page and the set of documents the engine ranks: a fused search pages through this many results, and never more than indexer.max.result.window.size."
msgstr ""

msgid "ACL"
Expand Down
4 changes: 2 additions & 2 deletions es/15.9/config/properties.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1396,8 +1396,8 @@ Index
- Weight per searcher for engine-side fusion, as name:weight pairs, e.g. default:0.7,semantic_chunk:0.3. The weights must sum to 1.0 and must name every searcher taking part. Empty weights them equally.
- (empty)
* - rank.fusion.pagination_depth
- How many results each searcher contributes per shard to engine-side fusion. This bounds both how deep a client can page and the set of documents the engine ranks.
- ``200``
- How many results each searcher contributes per shard to engine-side fusion. This bounds both how deep a client can page and the set of documents the engine ranks: a fused search pages through this many results, and never more than indexer.max.result.window.size.
- ``1000``

.. list-table:: ACL
:header-rows: 1
Expand Down
Loading
Loading