bext/Recherche intégrée · TantivyBEXT / 15
Recherche intégrée · Tantivy

Votre contenu.
À portée de recherche.

Recherche plein texte, filtres et facettes, intégrés au moteur bext. Transformez le contenu de votre application en un index local interrogeable avec Tantivy.

Voir l'intégration
FIG. 15 / TANTIVY
Du contenu à la découverte.
DANS CE CHAPITRE01Index local02Pertinence & facettes03Requêtes côté serveur
01 / La recherche, au plus près

Faites trouver ce que vous créez.

Tantivy est une bibliothèque de recherche plein texte écrite en Rust. bext l'intègre à son runtime pour interroger un index sur disque depuis votre application, sans service de recherche externe à exploiter.

01

Les accents ne bloquent plus.

La normalisation des accents et des majuscules rapproche « ecran » de « Écran ». Le même analyseur est utilisé pour les documents et les requêtes.

ecran → Écran
02

La recherche commence en tapant.

Un préfixe sur le dernier terme permet de retrouver un mot encore incomplet. Des garde-fous évitent d'élargir les termes trop courts ou les références numériques.

repar → réparation
03

Une seconde chance aux fautes.

Si la première recherche ne renvoie aucun résultat, un repli tolérant aux fautes peut intervenir. Les correspondances initiales restent prioritaires.

ipone → iphone
04

Des facettes qui suivent la requête.

Combinez filtres exacts, décomptes par valeur et tranches numériques. Les facettes portent sur le même ensemble filtré que les résultats.

marque · catégorie · prix
05

Chaque site garde son index.

Les index résident dans le répertoire du site. Le pont V8 utilise le même périmètre d'accès que les fichiers et la base de données du site.

.bext/search/catalog
06

Un index qui suit votre contenu.

Un outil d'indexation dédié ajoute ou met à jour les documents par identifiant. Une liste d'identifiants permet de supprimer les contenus retirés.

ajouter · actualiser · supprimer
02 / Le parcours

Indexez une fois. Retrouvez à la demande.

01

Vos documents

Déclarez les champs texte, les facettes et les valeurs numériques. Exportez vos documents en JSON Lines avec un identifiant stable.

02

L'index local

Un job d'indexation alimente Tantivy sur le disque du site. Le serveur conserve des lecteurs ; l'écriture s'effectue hors des requêtes utilisateur.

03

Votre interface

Interrogez l'index depuis le serveur. Recevez les résultats classés, le total et les facettes pour construire votre propre expérience de recherche.

03 / Dans les mots de vos utilisateurs

Moins d'impasses. Plus de découvertes.

Exemples illustratifs de comportements pris en charge. Le résultat réel dépend des documents indexés et de la requête.

ecran
Écran OLED

L'accent est normalisé.

Comprendre ce résultat

La saisie et le document passent par la normalisation des accents et des majuscules.

repar
Guide de réparation

Le dernier mot peut être incomplet.

Comprendre ce résultat

Le préfixe du dernier terme ouvre la recherche pendant la saisie, lorsque ce terme est éligible.

ipone
Coque iPhone

Le repli intervient après zéro résultat.

Comprendre ce résultat

La recherche tolérante est une seconde tentative ; elle ne remplace pas une recherche qui a déjà trouvé des résultats.

04 / L'intégration

Du schéma à la requête.

Activez le backend sur un serveur bext compatible, créez l'index, puis appelez le pont natif dans un contexte V8 côté serveur.

01

Activer le backend

L'opérateur active BEXT_SEARCH_TANTIVY=1 dans la configuration du processus serveur. Le backend est désactivé par défaut.

02

Préparer et alimenter l'index

Installez l'outil bext-search-index, déclarez le schéma et fournissez vos documents JSON Lines. Les champs de facettes doivent être déclarés dès la création.

03

Interroger depuis le serveur

Le pont __search prend un nom d'index et une requête JSON. Il renvoie une chaîne JSON contenant les résultats, le total et les facettes demandées.

Lire l'implémentation bext ↗
spec.json · le schéma
{
  "text_fields": ["name", "description"],
  "facet_fields": ["category", "brand"],
  "numeric_fields": ["price_cents"]
}
documents.jsonl · un document d'exemple
{"id":"screen-01","name":"Écran OLED","description":"Écran de remplacement","category":"screen","brand":"Demo","price_cents":12900}
terminal · indexation hors requête
bext-search-index --root /path/to/site \
  --index catalog --spec spec.json \
  --docs documents.jsonl
search.ts · contexte V8 serveur
declare function __search(index: string, queryJson: string): string;

// In a server-side bext V8 context.
const results = JSON.parse(__search("catalog", JSON.stringify({
  text: "ecran",
  filters: [["category", "screen"]],
  limit: 12,
  offset: 0,
  facets: [
    ["brands", { Terms: { field: "brand", size: 8 } }]
  ]
})));

// results.hits · results.total · results.facets
BEXT × TANTIVY

La recherche fait partie de l'application.

Catalogue produit, documentation ou bibliothèque de contenu : construisez l'interface qui convient à vos utilisateurs.