Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Topik ini memberikan praktik dan saran terbaik untuk memvalidasi dan memecahkan masalahIWordBreakerdan implementasiIStemmerAnda.
Topik ini diatur sebagai berikut:
- Praktik Terbaik
- Menguji Konsistensi Stemmer
- Pengujian Input Tidak Valid pada Stemmer
- Menguji Konsistensi Pemecah Kata
- Pengujian untuk Input Tidak Valid di Pemecah Kata
Praktik terbaik
- Pastikan bahwa model utas untuk sumber daya bahasa diatur ke "keduanya" dalam registri.
- Jika memungkinkan, letakkan data bahasa dalam sumber daya di DLL Anda daripada dalam file terpisah. Hal ini membuat DLL lebih mudah diinstal dan lebih aman. Selain itu, menempatkan data bahasa dalam sumber daya akan mengakibatkan peningkatan performa untuk komponen sumber daya bahasa tersebut.
- Minimalkan sumber daya sistem yang digunakan komponen sumber daya bahasa. Misalnya, jika setiap instans objek sumber daya bahasa memerlukan akses baca-saja ke leksikon, pertimbangkan untuk berbagi leksikon di semua instans.
- Pertimbangkan untuk menggunakan pemecah kata netral untuk menangani teks yang tidak dalam bahasa atau lokal untuk implementasi pemecah kata Anda. Ini akan membantu memastikan bahwa teks diproses secara konsisten di semua bahasa.
- Periksa semua kode pengembalian dan kembalikan dari fungsi seperti IStemmer::GenerateWordForms dan IWordBreaker::BreakText. Jika pengindeksan gagal, penting untuk meneruskan kesalahan sehingga pengguna diberi tahu dokumen mana yang diindeks.
Menguji konsistensi stemmer
Kami menyarankan agar Anda memantau performa implementasi IStemmer untuk konsistensi di bawah kondisi-kondisi berikut ini.
- Stemmer berkinerja secara konsisten di beberapa panggilan ke IStemmer::Init. Stemmer menginisialisasi ulang dengan parameter yang sama seperti pada inisialisasi sebelumnya, tanpa merilis parameter.
- Mengingat korpus pengujian yang sama, dan pengulangan kueri yang sama, IStemmer::GenerateWordForms menghasilkan output yang identik dan melakukan panggilan identik ke metode objekIWordFormSink.
Pengujian untuk input yang tidak valid di stemmer
Kami menyarankan agar Anda memantau bagaimana metodeIStemmermenangani semua kesalahan yang terkait dengan parameter yang tidak valid. Selain itu, kami sarankan Anda memastikan bahwa metode stemmer tidak menimbulkan pengecualian yang tidak tertangani. Stemmer harus menangani kesalahan berikut:
- Panggil IStemmer::Init dengan pfLicense diatur ke NULL. Init gagal dan tidak mengakibatkan pelanggaran akses.
- Panggilan ke IStemmer::GetLicenseToUse dengan parameter ppwcsLicense diatur ke NULL. IStemmer::GetLicenseToUse tidak mengakibatkan pelanggaran akses.
- Panggil ke IStemmer::GenerateWordForms dengan parameter pwcInBuf diatur ke NULL. IStemmer::GenerateWordForms gagal (mengembalikan E_FAIL) dan tidak mengakibatkan pelanggaran akses.
- Panggil ke IStemmer::GenerateWordForms dengan parameter cwc sama dengan 0. IStemmer::GenerateWordForms mengembalikan dengan sukses (mengembalikan S_OK) dan tidak mengakibatkan pelanggaran akses.
- Panggil ke IStemmer::GenerateWordForms dengan parameter pwcInBuf diatur ke NULL dan parameter cwc sama dengan 0. IStemmer::GenerateWordForms gagal (mengembalikan E_FAIL) dan tidak mengakibatkan pelanggaran akses.
Menguji konsistensi pemecah Kata
Kami menyarankan agar Anda memastikan bahwa implementasiIWordBreakerberkinerja secara konsisten dalam kondisi berikut:
- Pemecah kata berfungsi secara konsisten untuk beberapa kali panggilan ke metode IWordBreaker::Init. Pemecah kata menginisialisasi ulang dengan parameter yang sama seperti pada inisialisasi sebelumnya, tanpa merilis parameter.
- Mengingat corpus pengujian yang sama, dan pengulangan kueri yang sama, metodeIWordBreaker::BreakText menghasilkan output yang identik dan melakukan panggilan identik ke metode IWordSink dan objek IPhraseSink.
Pengujian untuk input yang tidak valid di pemecah kata
Kami menyarankan agar Anda memastikan bahwa metode IWordBreaker menangani semua kesalahan yang terkait dengan parameter yang tidak valid. Selain itu, kami sarankan Anda memastikan bahwa metode pemecah kata tidak menimbulkan pengecualian yang tidak tertangani. Pemecah kata harus melakukan fungsi berikut dan menangani kesalahan berikut:
- Panggilan ke IWordBreaker::Init harus mengembalikan LANGUAGE_E_DATABASE_NOT_FOUND atau S_OK.
- Panggilan ke IWordBreaker::Init berhasil menginisialisasi parameter pfLicense menjadi FALSE dan memanggil IStemmer::GetLicenseToUse serta tidak mengakibatkan pelanggaran akses.
- Pemecah kata tidak membaca setelah akhir parameter awcBuffer dalam metode IWordBreaker::BreakText.
- Panggil ke IWordBreaker::BreakText dengan pwcInBuf diatur ke NULL. IWordBreaker::BreakText gagal (mengembalikan E_FAIL) dan tidak mengakibatkan pelanggaran akses.
- Panggil ke IWordBreaker::BreakText dengan parameter cwc sama dengan 0. IWordBreaker::BreakText berhasil dikembalikan (mengembalikan S_OK) dan tidak mengakibatkan pelanggaran akses.
- Panggil ke metodeIWordBreaker::BreakText dengan parameter pwcInBuf diatur ke NULL dan parameter cwc sama dengan 0. IWordBreaker::BreakText gagal (mengembalikan E_FAIL) dan tidak mengakibatkan pelanggaran akses.
- Frasa yang dihasilkan selama pembuatan indeks berisi jumlah kata yang sama.
- Frasa dihasilkan selama pembuatan indeks melalui panggilan berturut-turut ke IWordFormSink::PutWord dan metode IWordFormSink::PutAltWord. Pemecah kata hanya menggunakan objek IPhraseSink selama proses pencarian.
Topik terkait