Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
- A Stemmer konzisztencia tesztelése
- Érvénytelen bemenet tesztelése a stemmerben
- Word Breaker konzisztencia tesztelése
- Érvénytelen bemenetek tesztelése a Word Breakerben
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.
Kapcsolódó témakörök