Les ensembles de synonymes versionnés déclarent une expansion unidirectionnelle ou bidirectionnelle, permettent des substitutions par locataire, et ne doivent pas étendre une requête à des documents que le chercheur n'est pas autorisé à voir.
Statut du package : contexte de référence prêt pour revue humaine. Le contrat et les scénarios de test sont complets, mais aucune affirmation n'est faite qu'une implémentation adoptante les ait validés.
Décision
La recherche sur site applique des ensembles de synonymes versionnés explicites sur la direction : équivalence bidirectionnelle ou expansion unidirectionnelle. Les locataires peuvent superposer des substitutions qui remplacent ou ajoutent des correspondances sans modifier l'ensemble global en place. L'expansion de requête s'exécute après que les filtres d'autorisation sont liés au chercheur ; l'expansion ne doit pas récupérer ni scorer des documents que l'utilisateur ne peut pas lire, y compris via un synonyme qui n'existe que sur des titres cachés.
Portée
- Expansion de synonymes au moment de la requête, versionnage des ensembles de synonymes, correspondances unidirectionnelles versus bidirectionnelles, substitutions par locataire, et récupération sécurisée par ACL.
- Recherche backend sur site pour catalogues et collections de connaissances autorisés.
- Évaluation du classement affecté par les synonymes sur un ensemble de requêtes étiquetées.
Hors de ce bloc
- Entraînement de modèles d'apprentissage à classer et entrepôts d'analyses de clics.
- Découpage de documents pour RAG.
Contrat
- Chaque ensemble de synonymes publié possède un
set_versionmonotone et une liste de correspondances avec unedirectiondetwo-wayouone-way. - Une correspondance unidirectionnelle
source -> targetétend les requêtes contenant la source pour inclure les termes cibles ; elle n'étend pas la cible vers la source sauf si une correspondance inverse existe. - Les substitutions par locataire sont stockées comme un ensemble de priorité supérieure et ne modifient jamais les octets de l'ensemble parent.
- L'exécution de la recherche applique les ACL des documents (ou visibilité équivalente) avant ou avec le scoring pour que les termes étendus ne puissent pas faire apparaître de résultats non autorisés.
- Les documents cachés ne contribuent pas à la découverte de synonymes : les administrateurs ne doivent pas récolter d'alias à partir de titres que le chercheur ne peut pas voir.
- Le changement de
set_versionest enregistré dans le journal des requêtes pour que les comparaisons de pertinence soient reproductibles.
Implémentation
- Normaliser les correspondances bidirectionnelles en classes d'équivalence déterministes. Garder les règles unidirectionnelles directionnelles et limiter l'expansion récursive par détection des termes visités plus
max_expansion_terms. - Exécuter l'expansion dans la même requête consciente des autorisations que le filtre utilisateur.
Gestion des échecs
- Les cycles bidirectionnels équivalents sont regroupés en une classe canonique unique. Les cycles directionnels sont soit rejetés par un profil moteur incapable de les représenter en toute sécurité, soit compilés avec une détection déterministe des termes visités pour qu'ils ne puissent pas récursivement s'étendre sans limite.
- Un
set_versioninconnu sur une requête épinglée échoue en mode fermé à la dernière version valide ou sans expansion, jamais sur un brouillon non publié.
Vérification
- Interroger une correspondance unidirectionnelle et vérifier que la requête inverse ne correspond pas sauf si la bidirectionnalité est configurée.
- Rechercher en tant qu'utilisateur ne pouvant pas lire un document cible synonyme et vérifier qu'aucun résultat n'apparaît.
Les exemples à l'apparence exécutable dans ce package sont des fixtures et des contrats d'acceptation. Exécutez
python tools/validate.py depuis la racine de la collection pour vérifier la structure et les métadonnées du package ; puis
implémentez et exécutez les scénarios dans le dépôt cible.
Hypothèses d'adoption
- Les noms et valeurs numériques dans
example.yamlsont un profil d'adoption, pas des valeurs par défaut universelles. - L'équipe adoptante doit mapper les acteurs, classes de données, vocabulaire d'erreur et propriété à son système.
Références
- Les filtres de synonymes au niveau analyseur sont une fonctionnalité courante des moteurs de recherche ; Elastic documente une approche sur https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html. La direction, les substitutions par locataire et l'expansion sécurisée par ACL restent une décision de projet.