共用方式為


針對語言資源和最佳做法進行疑難排解

本主題提供驗證和疑難排解 IWordBreakerIStemmer 實作的最佳做法和建議。

本主題的組織方式如下:

最佳做法

  • 確定語言資源的執行緒模型在登錄中設定為 「兩者」。
  • 可能的話,請將語言資料放在 DLL 中的資源中,而不是放在個別的檔案中。 這可讓 DLL 更容易安裝和更安全。 此外,將語言資料放在資源中將會導致該語言資源元件的效能改善。
  • 將語言資源元件所使用的系統資源降至最低。 例如,如果語言資源物件的每個實例都需要語彙的唯讀存取權,請考慮在所有實例之間共用語彙。
  • 請考慮使用中性斷詞工具來處理不是語言或地區設定的文字,以進行斷詞工具實作。 這有助於確保文字在所有語言之間一致地處理。
  • 檢查所有傳回碼,並從 IStemmer::GenerateWordFormsIWordBreaker::BreakText等函式傳回它們。 如果編制索引失敗,請務必傳遞錯誤,讓使用者收到哪些檔編制索引的通知。

測試字幹分析器一致性

建議您在下列情況下監視 IStemmer 實作的效能,以取得一致性:

  • 字幹分析器會在對 IStemmer::Init的多個呼叫之間一致地執行。 字幹分析器會使用與先前初始化相同的參數重新初始化,而不會釋放參數。
  • 假設相同的測試主體,以及相同查詢的重複, IStemmer::GenerateWordForms 會產生相同的輸出,並且對 IWordFormSink 物件的方法進行相同的呼叫。

在字幹分析器中測試不正確輸入

建議您監視 IStemmer 方法如何處理與無效參數相關的所有錯誤。 此外,我們建議您確定字幹分析器方法不會引發未處理的例外狀況。 字幹分析器應該處理下列錯誤:

  • 呼叫 IStemmer::Init ,並將 pfLicense 設定為 Null。 Init 失敗,且不會產生存取違規。
  • 呼叫 IStemmer::GetLicenseToUse ,並將 ppwcsLicense 參數設定為 NullIStemmer::GetLicenseToUse 不會造成存取違規。
  • 呼叫 IStemmer::GenerateWordForms ,並將 pwcInBuf 參數設定為 NullIStemmer::GenerateWordForms 失敗, (傳回E_FAIL) 且不會產生存取違規。
  • 使用cwc參數等於 0 呼叫IStemmer::GenerateWordFormsIStemmer::GenerateWordForms 成功傳回 (傳回S_OK) ,且不會產生存取違規。
  • 呼叫 IStemmer::GenerateWordForms ,並將 pwcInBuf 參數設定為 Null且 cwc 參數等於 0。 IStemmer::GenerateWordForms 失敗, (傳回E_FAIL) 且不會產生存取違規。

測試Word中斷程式一致性

我們建議您確定 IWordBreaker 實作在下列情況下一致地執行:

  • Word斷器在其IWordBreaker::Init方法的多個呼叫之間一致地執行。 斷詞工具會以與先前初始化相同的參數重新初始化,而不會釋放參數。
  • 假設相同的測試主體和重複相同的查詢, IWordBreaker::BreakText 方法會產生相同的輸出,並且對 IWordSinkIPhraseSink 物件的方法進行相同的呼叫。

在Word斷器中測試不正確輸入

我們建議您確定 IWordBreaker 方法會處理與無效參數相關的所有錯誤。 此外,我們建議您確定斷詞工具方法不會引發未處理的例外狀況。 斷詞工具應該執行下列函式並處理下列錯誤:

擴充語言資源

瞭解語言資源元件

實作Word斷器和字幹分析器

語言和 Unicode 考慮