Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique fournit des bonnes pratiques et des suggestions pour la validation et la résolution des problèmes liés à vos implémentations IWordBreaker et IStemmer .
Cette rubrique est organisée comme suit :
- Meilleures pratiques
- Tester la cohérence du générateur de souches
- Test de l'entrée non valide dans le racineur
- Test de la cohérence de l’analyseur de séparation de mots
- Test des entrées non valides dans le décomposeur Word
Meilleures pratiques
- Vérifiez que le modèle de threading pour les ressources linguistiques est défini sur "les deux" dans le Registre.
- Si possible, placez les données linguistiques dans une ressource dans votre DLL plutôt que dans un fichier distinct. Cela facilite l’installation et la sécurisation de la DLL. En outre, le fait de placer des données linguistiques dans une ressource entraîne une amélioration des performances pour ce composant de ressource de langage.
- Réduisez les ressources système utilisées par les composants de ressources linguistiques. Par exemple, si chaque instance d’un objet de ressource de langage a besoin d’un accès en lecture seule à un lexique, envisagez de partager le lexique entre toutes les instances.
- Envisagez d’utiliser l’analyseur de mots neutre pour gérer le texte qui n’est pas dans la langue ou les paramètres régionaux de votre implémentation de analyseur de mots. Cela permet de s’assurer que le texte est traité de manière cohérente dans toutes les langues.
- Vérifiez tous les codes de retour et retournez-les à partir de fonctions telles que IStemmer ::GenerateWordForms et IWordBreaker ::BreakText. En cas d’échec de l’indexation, il est important de transmettre l’erreur afin que l’utilisateur soit averti des documents qui ont été indexés.
Tester la cohérence du stemmer
Nous vous recommandons de surveiller les performances d’une implémentation IStemmer pour assurer la cohérence dans les conditions suivantes :
- Le générateur de formes dérivées effectue constamment plusieurs appels à IStemmer ::Init. Le stemmer se réinitialise avec les mêmes paramètres que lors de l'initialisation précédente, sans réinitialiser les paramètres.
- Étant donné le même corpus de test et les répétitions de la même requête, IStemmer ::GenerateWordForms produit la sortie identique et effectue des appels identiques aux méthodes de l’objet IWordFormSink .
Test de l'entrée invalide dans le stemmer
Nous vous recommandons de surveiller la façon dont les méthodes IStemmer gèrent toutes les erreurs liées aux paramètres non valides. En outre, nous vous recommandons de vous assurer que les méthodes de stemming ne déclenchent pas d'exceptions non gérées. Le générateur de formes dérivées doit gérer les erreurs suivantes :
- Appelez IStemmer ::Init avec pfLicense défini sur NULL. L’init échoue et n’entraîne pas de violation d’accès.
- Appelez IStemmer ::GetLicenseToUse avec le paramètre ppwcsLicense défini sur NULL. IStemmer ::GetLicenseToUse n’entraîne pas de violation d’accès.
- Appelez IStemmer ::GenerateWordForms avec le paramètre pwcInBuf défini sur NULL. IStemmer ::GenerateWordForms échoue (retourne E_FAIL) et n’entraîne pas de violation d’accès.
- Appelez IStemmer ::GenerateWordForms avec le paramètre cwc égal à 0. IStemmer ::GenerateWordForms retourne correctement (retourne S_OK) et n’entraîne pas de violation d’accès.
- Appelez IStemmer ::GenerateWordForms avec le paramètre pwcInBuf défini sur NULL et le paramètre cwc égal à 0. IStemmer ::GenerateWordForms échoue (retourne E_FAIL) et n’entraîne pas de violation d’accès.
Essai de la cohérence de l'analyseur de mots
Nous vous recommandons de vous assurer que l’implémentation IWordBreaker s’effectue de manière cohérente dans les conditions suivantes :
- Le module de segmentation des mots fonctionne de manière cohérente lors de plusieurs appels à sa méthode IWordBreaker::Init. L’analyseur de mots réinitialise avec les mêmes paramètres que dans l’initialisation précédente, sans libérer les paramètres.
- Étant donné le même corpus de test et les répétitions de la même requête, la méthode IWordBreaker ::BreakText produit la sortie identique et effectue des appels identiques aux méthodes des objets IWordSink et IPhraseSink .
Test de la saisie non valide dans le séparateur de mots
Nous vous recommandons de vous assurer que les méthodes IWordBreaker gèrent toutes les erreurs liées aux paramètres non valides. En outre, nous vous recommandons de vous assurer que les méthodes de segmentation de mots ne déclenchent pas d’exceptions non gérées. L’analyseur de mots doit effectuer les fonctions suivantes et gérer les erreurs suivantes :
- L’appel à IWordBreaker ::Init doit retourner LANGUAGE_E_DATABASE_NOT_FOUND ou S_OK.
- Appel à IWordBreaker ::Init initialise correctement le paramètre pfLicense sur FALSE et appelle IStemmer ::GetLicenseToUse et n’entraîne pas de violation d’accès.
- L’analyseur de texte Word ne lit pas au-delà de la fin du paramètre awcBuffer dans la méthode IWordBreaker::BreakText.
- Appelez IWordBreaker::BreakText avec pwcInBuf défini sur NULL. IWordBreaker ::BreakText échoue (retourne E_FAIL) et n’entraîne pas de violation d’accès.
- Appelez IWordBreaker ::BreakText avec le paramètre cwc égal à 0. IWordBreaker ::BreakText retourne correctement (retourne S_OK) et n’entraîne pas de violation d’accès.
- Appelez la méthode IWordBreaker ::BreakText avec le paramètre pwcInBuf défini sur NULL et le paramètre cwc égal à 0. IWordBreaker ::BreakText échoue (retourne E_FAIL) et n’entraîne pas de violation d’accès.
- Les expressions générées lors de la création d’index contiennent le même nombre de mots.
- Les expressions sont générées lors de la création d’index via des appels successifs aux méthodes IWordFormSink ::P utWord et IWordFormSink ::P utAltWord . L’analyseur de mots utilise uniquement l’objet IPhraseSink pendant l’heure de la requête.
Rubriques connexes