Risoluzione dei problemi relativi alle risorse del linguaggio e alle procedure consigliate
In questo argomento vengono fornite procedure consigliate e suggerimenti per convalidare e risolvere i problemi relativi alle implementazioni di IWordBreaker e IStemmer .
Questo argomento è organizzato come segue:
- Procedure consigliate
- Test della coerenza dello stemmer
- Test per l'input non valido in Stemmer
- Test della coerenza Word breaker
- Test per input non valido nel breaker di Word
Procedure consigliate
- Assicurarsi che il modello di threading per le risorse del linguaggio sia impostato su "entrambi" nel Registro di sistema.
- Se possibile, inserire i dati del linguaggio in una risorsa nella DLL anziché in un file separato. Ciò semplifica l'installazione e la sicurezza della DLL. Inoltre, l'inserimento dei dati del linguaggio in una risorsa comporterà prestazioni migliorate per tale componente della risorsa del linguaggio.
- Ridurre al minimo le risorse di sistema usate dai componenti delle risorse del linguaggio. Ad esempio, se ogni istanza di un oggetto risorsa del linguaggio richiede l'accesso in sola lettura a un lexicon, prendere in considerazione la condivisione del lexicon in tutte le istanze.
- È consigliabile usare il word breaker neutrale per gestire il testo non presente nella lingua o nelle impostazioni locali per l'implementazione del word breaker. Ciò consente di assicurarsi che il testo venga elaborato in modo coerente in tutte le lingue.
- Controllare tutti i codici restituiti e restituirli da funzioni come IStemmer::GenerateWordForms e IWordBreaker::BreakText. Se l'indicizzazione ha esito negativo, è importante passare l'errore in modo che l'utente riceva una notifica ai documenti indicizzati.
Test della coerenza dello stemmer
È consigliabile monitorare le prestazioni di un'implementazione di IStemmer per la coerenza nelle condizioni seguenti:
- Lo stemmer esegue in modo coerente più chiamate a IStemmer::Init. Lo stemmer reinizializza con gli stessi parametri dell'inizializzazione precedente, senza rilasciare i parametri.
- Dato lo stesso corpus di test e le ripetizioni della stessa query, IStemmer::GenerateWordForms produce l'output identico e effettua chiamate identiche ai metodi dell'oggetto IWordFormSink .
Test per l'input non valido in Stemmer
È consigliabile monitorare il modo in cui i metodi IStemmer gestiscono tutti gli errori correlati ai parametri non validi. È inoltre consigliabile assicurarsi che i metodi stemmer non generino eccezioni non gestite. Lo stemmer deve gestire gli errori seguenti:
- Chiamare a IStemmer::Init con pfLicense impostato su NULL. Init ha esito negativo e non comporta una violazione di accesso.
- Chiamare a IStemmer::GetLicenseToUse con il parametro ppwcsLicense impostato su NULL. IStemmer::GetLicenseToUse non genera una violazione di accesso.
- Chiamare a IStemmer::GenerateWordForms con il parametro pwcInBuf impostato su NULL. IStemmer::GenerateWordForms ha esito negativo (restituisce E_FAIL) e non genera una violazione di accesso.
- Chiamare a IStemmer::GenerateWordForms con il parametro cwc uguale a 0. IStemmer::GenerateWordForms restituisce correttamente (restituisce S_OK) e non genera una violazione di accesso.
- Chiamare a IStemmer::GenerateWordForms con il parametro pwcInBuf impostato su NULL e il parametro cwc uguale a 0. IStemmer::GenerateWordForms ha esito negativo (restituisce E_FAIL) e non genera una violazione di accesso.
Test della coerenza Word breaker
È consigliabile assicurarsi che l'implementazione di IWordBreaker venga eseguita in modo coerente nelle condizioni seguenti:
- Word breaker esegue in modo coerente più chiamate al metodo IWordBreaker::Init. Il word breaker reinizializza con gli stessi parametri dell'inizializzazione precedente, senza rilasciare i parametri.
- Dato lo stesso corpus di test e ripetizioni della stessa query, il metodo IWordBreaker::BreakText produce l'output identico e effettua chiamate identiche ai metodi degli oggetti IWordSink eIPhraseSink .
Test per input non valido nel breaker di Word
È consigliabile assicurarsi che i metodi IWordBreaker gestiscono tutti gli errori correlati ai parametri non validi. È inoltre consigliabile assicurarsi che i metodi di word breaker non generino eccezioni non gestite. Il word breaker deve eseguire le funzioni seguenti e gestire gli errori seguenti:
- La chiamata a IWordBreaker::Init deve restituire LANGUAGE_E_DATABASE_NOT_FOUND o S_OK.
- La chiamata a IWordBreaker::Init inizializza correttamente il parametro pfLicense su FALSE e chiama IStemmer::GetLicenseToUse e non genera una violazione di accesso.
- Word breaker non viene letto oltre la fine del parametro awcBuffer nel metodo IWordBreaker::BreakText.
- Chiamare a IWordBreaker::BreakText con pwcInBuf impostato su NULL. IWordBreaker::BreakText non riesce (restituisce E_FAIL) e non genera una violazione di accesso.
- Chiamare a IWordBreaker::BreakText con il parametro cwc uguale a 0. IWordBreaker::BreakText restituisce correttamente (restituisce S_OK) e non genera una violazione di accesso.
- Chiamare il metodo IWordBreaker::BreakText con il parametro pwcInBuf impostato su NULL e il parametro cwc uguale a 0. IWordBreaker::BreakText non riesce (restituisce E_FAIL) e non genera una violazione di accesso.
- Le frasi generate durante la creazione dell'indice contengono lo stesso numero di parole.
- Le frasi vengono generate durante la creazione dell'indice tramite chiamate successive ai metodi IWordFormSink::P utWord e IWordFormSink::P utAltWord. Il word breaker usa solo l'oggetto IPhraseSink durante il tempo di query.
Argomenti correlati