Aller au contenu principal

API Middleware

Pipeline de middleware pour les opérations d'indexation et de recherche.

Classes principales​

Middleware​

class whoosh.middleware.base.Middleware

Classe de base pour tous les middlewares.

Méthodes​

HookSignatureAppelé quand
startup(context) -> contextInitialisation writer/searcher
shutdown(context) -> contextNettoyage writer/searcher
before_index(context) -> contextAvant l'ajout d'un document
after_index(context) -> contextAprès l'ajout d'un document
before_delete(context) -> contextAvant la suppression
after_delete(context) -> contextAprès la suppression
before_search(context) -> contextAvant la recherche
after_search(context) -> contextAprès les résultats
on_error(context, exc) -> NoneSur exception
on_commit(context) -> NoneAprès le commit

MiddlewareContext​

class whoosh.middleware.context.MiddlewareContext(
operation: str,
metadata: dict | None = None
)

Attributs:

AttributTypeDescription
operationstr"index", "search", "delete", "commit"
queryAnyRequête (pour search)
resultsAnyRésultats de la recherche
documentdictDocument à indexer (pour index)
docnumintNuméro du document (pour delete)
metadatadictDonnées par requête (request_id, trace_id)

MiddlewareChain​

class whoosh.middleware.base.MiddlewareChain(middlewares)

Orchestre l'exécution des middlewares dans l'ordre.

Méthodes​

MéthodeDescription
chain.add(middleware)Ajoute un middleware
chain.run_before(hook, context)Exécute les hooks before
chain.run_after(hook, context)Exécute les hooks after
chain.run_before_all(hook, context)Exécute tous les hooks before
chain.run_after_all(hook, context)Exécute tous les hooks after

SettingGuard​

class whoosh.middleware.base.SettingGuard(
field: str | None = None,
default: bool = False
)

Vérifie et réinitialise les settings de middleware.

Skip​

class whoosh.middleware.base.Skip(metadata)

Exception pour sauter une opération tout en la commitant.

Intégration​

apply_middleware_to_writer​

def apply_middleware_to_writer(
writer: IndexWriter,
middlewares: list[Middleware]
) -> IndexWriter

Retourne un writer enveloppé par les middlewares.

apply_middleware_to_searcher​

def apply_middleware_to_searcher(
searcher: Searcher,
middlewares: list[Middleware]
) -> Searcher

Retourne un searcher enveloppé par les middlewares.

Exceptions​

class MiddlewareError(Exception)
class StopOperation(Exception)
class SkipOperation(Skip)