Nyelvi erőforrások és ajánlott eljárások hibaelhárítása

Ez a témakör ajánlott eljárásokat és javaslatokat tartalmaz az IWordBreaker és az IStemmer implementációk ellenőrzéséhez és hibaelhárításához.

Ez a témakör a következőképpen van rendszerezve:

Ajánlott eljárások

  • Győződjön meg arról, hogy a nyelvi erőforrások szálmodellje "mindkettő" értékre van állítva a beállításjegyzékben.
  • Ha lehetséges, helyezze a nyelvi adatokat egy erőforrásba a DLL-ben, nem pedig egy külön fájlba. Ez megkönnyíti a DLL telepítését és biztonságát. Emellett a nyelvi adatok erőforrásba helyezése jobb teljesítményt eredményez az adott nyelvi erőforrás-összetevő esetében.
  • Minimalizálja a nyelvi erőforrás-összetevők által használt rendszererőforrásokat. Ha például egy nyelvi erőforrás-objektum minden példánya írásvédett módon szeretne hozzáférni egy lexikonhoz, fontolja meg a lexikon megosztását az összes példány között.
  • Fontolja meg a semleges szóhatároló használatát olyan szövegek kezeléséhez, amelyek nem a nyelvben vagy a területi beállításban szerepelnek a szóhatároló implementációjához. Ez segít biztosítani, hogy a szöveg minden nyelven egységesen legyen feldolgozva.
  • Ellenőrizze az összes visszatérési kódot, és adja vissza azokat olyan függvényekből, mint az IStemmer::GenerateWordForms és az IWordBreaker::BreakText. Ha az indexelés sikertelen, fontos átadni a hibát, hogy a felhasználó értesítést kapjon arról, hogy mely dokumentumokat indexelték.

A stemmer konzisztencia tesztelése

Javasoljuk, hogy az alábbi feltételek mellett figyelje az IStemmer-implementációk konzisztenciájának teljesítményét:

  • A stemmer következetesen működik több IStemmer::Init hívás során. A stemmer újrainicializálja ugyanazokat a paramétereket, mint az előző inicializálásban, a paraméterek felszabadítása nélkül.
  • Az azonos tesztkorpuszt és a lekérdezés ismétlődéseit feltételezve, az IStemmer::GenerateWordForms ugyanazt a kimenetet állítja elő, és azonos hívásokat hajt végre az IWordFormSink objektum metódusaihoz.

Az érvénytelen bemenet tesztelése a szótőkeresőben

Javasoljuk, hogy figyelje meg, hogyan kezelik az IStemmer metódusok az érvénytelen paraméterekkel kapcsolatos összes hibát. Emellett azt is javasoljuk, hogy győződjön meg arról, hogy a stemmer metódusok nem emelnek kezeletlen kivételeket. A stemmernek a következő hibákat kell kezelnie:

  • IStemmer::Init hívása pfLicense-el NULL-ra állítva. Az Init sikertelen, és nem eredményez hozzáférés-szabálysértést.
  • A IStemmer::GetLicenseToUse hívás a ppwcsLicense paraméterrel, amely NULL értékre van beállítva. IStemmer::GetLicenseToUse nem eredményez hozzáférés-megsértést.
  • IStemmer::GenerateWordForms meghívása a pwcInBuf paraméterrel NULL-ra van állítva. IStemmer::GenerateWordForms sikertelen (E_FAIL ad vissza), és nem eredményez hozzáférés-megsértést.
  • IStemmer::GenerateWordForms hívása a cwc paraméterrel, amikor az egyenlő 0. IStemmer::A GenerateWordForms sikeresen visszatér (S_OK ad vissza), és nem eredményez hozzáférés-megsértést.
  • Hívás az IStemmer::GenerateWordForms metódusra a pwcInBuf paramétert NULL értékre állítva és a cwc paramétert 0-ra. IStemmer::GenerateWordForms sikertelen (E_FAIL ad vissza), és nem eredményez hozzáférés-megsértést.

Word breaker konzisztenciájának tesztelése

Javasoljuk, hogy győződjön meg arról, hogy az IWordBreaker implementáció következetesen, a következő feltételek mellett teljesít:

  • A Word-megszakító következetesen működik az IWordBreaker::Init metódus több meghívása során. A szómegszakító újrainicializálja a paramétereket ugyanazokkal, mint az előző inicializálásban, anélkül, hogy felszabadítaná azokat.
  • Azonos tesztkorpuszt és ugyanazon lekérdezés ismétléseit használva az IWordBreaker::BreakText metódus ugyanazt a kimenetet állítja elő, és azonos hívásokat intéz az IWordSink és IPhraseSink objektumok metódusaihoz.

Érvénytelen bemenet tesztelése a szóelválasztóban

Javasoljuk, hogy az IWordBreaker metódusok kezeljék az érvénytelen paraméterekkel kapcsolatos összes hibát. Emellett azt is javasoljuk, hogy győződjön meg arról, hogy a szóhatároló metódusok nem okoznak kezeletlen kivételeket. A szóválasztónak a következő függvényeket kell végrehajtania, és kezelnie kell a következő hibákat:

  • Az IWordBreaker::Init hívásának LANGUAGE_E_DATABASE_NOT_FOUND-ot vagy S_OK-t kell visszaadnia.
  • A(z) IWordBreaker::Init hívása sikeresen inicializálja a pfLicense paramétert FALSE értékre, meghívja a IStemmer::GetLicenseToUse függvényt, és nem eredményez hozzáférés-megsértést.
  • A Word breaker nem olvassa fel az awcBuffer paraméter végét az IWordBreaker::BreakText metódusban.
  • Az IWordBreaker::BreakText meghívása, amikor a pwcInBuf NULL-ra van állítva. IWordBreaker::BreakText sikertelen (E_FAIL értéket ad vissza), és nem eredményez hozzáférés sértést.
  • IWordBreaker::BreakText meghívása, amikor a cwc paraméter értéke 0. IWordBreaker::BreakText sikeresen visszatér (visszaadja az S_OK értéket), és nem eredményez hozzáférés-megsértést.
  • Hívja meg az IWordBreaker::BreakText metódust, amelynek pwcInBuf paramétere NULL , a cwc paraméter pedig 0. IWordBreaker::BreakText meghiúsul (E_FAIL visszatér), és nem eredményez hozzáférési megsértést.
  • Az index létrehozása során létrehozott kifejezések ugyanannyi szót tartalmaznak.
  • A kifejezések az index létrehozása során jönnek létre az IWordFormSink::P utWord és az IWordFormSink::P utAltWord metódusok egymást követő hívásain keresztül. A szóválasztó csak az IPhraseSink objektumot használja a lekérdezési idő alatt.

Nyelvi erőforrások kiterjesztése

A nyelvi erőforrás összetevőinek ismertetése

Word Breaker és Stemmer implementálása

Nyelvi és Unicode-szempontok