Aller au contenu principal

API Champs

Définissez la structure de votre index avec les types de champs.

Schema​

class whoosh.fields.Schema

Définit les champs disponibles dans l'index.

Méthodes​

add()​

schema.add(fieldname, fieldtype, glob=False, **kwargs)

Ajoute un champ. Si glob=True, le nom est traité comme un pattern glob.

remove()​

schema.remove(fieldname, **kwargs)

Supprime un champ.

items()​

for name, field in schema.items():
print(name, field)

Retourne les paires (nom, objet champ).

Types de champs​

TEXT​

TEXT(
stored=False,
unique=False,
phrase=True,
analyzer=None,
field_boost=1.0
)

Texte libre avec tokenisation et recherche de phrase optionnelle.

Exemple:

titre = TEXT(stored=True)
corps = TEXT(analyzer=StemmingAnalyzer(), phrase=False)

ID​

ID(stored=False, unique=False, field_boost=1.0)

Identifiant non tokenisé. Stocke la valeur entière comme terme unique.

Exemple:

chemin = ID(stored=True, unique=True)
slug = ID(stored=True)

KEYWORD​

KEYWORD(
stored=False,
lowercase=False,
commas=False,
scorable=False,
field_boost=1.0
)

Mots-clés séparés par espace ou virgule.

Exemple:

tags = KEYWORD(lowercase=True, commas=True, stored=True)

STORED​

STORED(stored=True)

Champ stocké uniquement, non indexé ni searchable.

NUMERIC​

NUMERIC(numtype=int, stored=False, unique=False, field_boost=1.0)

Champ numérique (entier ou flottant).

DATETIME​

DATETIME(stored=False, unique=False, field_boost=1.0)

Champ date/heure.

BOOLEAN​

BOOLEAN(stored=False, unique=False, field_boost=1.0)

Champ booléen. Searchable avec oui, non, vrai, faux, 1, 0, t, f.

VectorField​

VectorField(
dimensions: int,
metric: str = "cosine",
provider: str = "numpy",
stored: bool = False
)

Champ pour embeddings vectoriels.

Exemple:

embedding = VectorField(dimensions=384, metric="cosine", stored=True)

SchemaBuilder​

API fluent pour construire des schémas :

from whoosh.fields import SchemaBuilder, TEXT, ID, NUMERIC

schema = (
SchemaBuilder()
.field("titre", TEXT(stored=True))
.field("chemin", ID(stored=True, unique=True))
.field("contenu", TEXT)
.field("note", NUMERIC(float, stored=True))
.build()
)

Attributs de FieldType​

AttributTypeDescription
formatFormatDéfinit l'indexation
vectorFormatFormat vectoriel optionnel
scorableboolStocke la longueur pour BM25F
storedboolStocke la valeur
uniqueboolIdentifie les documents de façon unique