From 5ef9a5b012fd934be5e05c8176e03abd941abe0e Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Sun, 3 Dec 2023 14:20:08 +0800 Subject: [PATCH] LMA // Fix wrong results given by hasUnigramsFor() for cassette module. --- .../Sources/LangModelAssembly/LMInstantiator.swift | 5 ++++- .../LangModelAssembly/LMInstantiator_SQLExtension.swift | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMInstantiator.swift b/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMInstantiator.swift index 5a9c63ec..6bc7be28 100644 --- a/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMInstantiator.swift +++ b/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMInstantiator.swift @@ -274,7 +274,10 @@ public extension vChewingLM { /// - Returns: 是否在庫。 public func hasUnigramsFor(keyArray: [String]) -> Bool { let keyChain = keyArray.joined(separator: "-") - return keyChain == " " || (hasFactoryCoreUnigramsFor(keyArray: keyArray) && !keyChain.isEmpty) + // 因為涉及到對濾除清單的檢查,所以這裡必須走一遍 .unigramsFor()。 + // 從 SQL 查詢的角度來看,這樣恐怕不是很經濟,因為 SQLite 要專門準備一次查詢結果。 + // 但以 2010 年的電腦效能作為基準參考來看的話,這方面的效能壓力可以忽略不計。 + return keyChain == " " || (!unigramsFor(keyArray: keyArray).isEmpty && !keyChain.isEmpty) } /// 根據給定的索引鍵和資料值,確認是否有該具體的資料值在庫。 diff --git a/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMInstantiator_SQLExtension.swift b/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMInstantiator_SQLExtension.swift index b0eb7238..6608b564 100644 --- a/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMInstantiator_SQLExtension.swift +++ b/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMInstantiator_SQLExtension.swift @@ -166,6 +166,7 @@ extension vChewingLM.LMInstantiator { } /// 根據給定的讀音索引鍵,來獲取原廠資料庫辭典內的對應資料陣列的 UTF8 資料、就地分析、生成單元圖陣列。 + /// - remark: 該函式暫時用不到,但先不用刪除。沒準今後會有用場。 /// - parameters: /// - key: 讀音索引鍵。 func hasFactoryCoreUnigramsFor(keyArray: [String]) -> Bool {