API Écriture
Écrire, mettre à jour et supprimer des documents via l'interface IndexWriter.
IndexWriter
class whoosh.writing.IndexWriter
Classe de base pour l'écriture de documents.
Contexte manager
with ix.writer() as writer:
writer.add_document(title="Bonjour", content="Monde")
# commit() appelé automatiquement
Méthodes
add_document(**fields)
Ajoute un document.
Kwargs spéciaux:
_stored_<nom_champ>: Valeur stockée alternative_<nom_champ>_boost: Boost spécifique au champ_boost: Boost global du document
update_document(**fields)
Met à jour/remplace un document. Utilise les champs unique pour trouver les documents existants.
delete_document(docnum, delete=True)
Supprime par numéro de document.
delete_by_term(fieldname, text) -> int
Supprime tous les documents avec le terme dans le champ.
Retourne:
int: Nombre de documents supprimés.
delete_by_query(q, searcher=None) -> int
Supprime les documents correspondant à la requête.
commit(mergetype=None, optimize=False, merge=True)
Commit les changements sur disque.
Args:
mergetype: Fonction de fusion personnaliséeoptimize: Fusionner tous les segments en un seulmerge: Si False, ne pas fusionner les segments existants
cancel()
Annule les changements et libère le verrou.
add_field(fieldname, fieldtype, **kwargs)
Ajoute un champ (avant d'ajouter des documents).
remove_field(fieldname)
Supprime un champ du schéma.
searcher(**kwargs) -> Searcher
Retourne un searcher (pour lecture pendant la session d'écriture).
reader(**kwargs) -> IndexReader
Retourne un reader pour l'état actuel.
group()
Context manager pour grouper des documents dans un segment.
SegmentWriter
Implémentation concrète d'IndexWriter.
AsyncWriter
Writer threaded qui réessaie automatiquement en cas de contention.
from whoosh.writing import AsyncWriter
writer = AsyncWriter(index, delay=0.25, writerargs={})
BufferedWriter
Buffer les documents en mémoire et commit périodiquement.
from whoosh.writing import BufferedWriter
writer = BufferedWriter(
index,
period=60, # Max secondes entre commits
limit=100 # Max documents par commit
)
Politiques de fusion
from whoosh.writing import NO_MERGE, MERGE_SMALL, OPTIMIZE, CLEAR
writer.commit(mergetype=NO_MERGE)
writer.commit(mergetype=MERGE_SMALL)
writer.commit(mergetype=OPTIMIZE)
writer.commit(mergetype=CLEAR)
Exceptions
IndexingError
class whoosh.writing.IndexingError(Exception)
Levée quand une opération d'indexation échoue.