我發現了Apache在Java中的Soundex和Metaphone的推理,但我更願意只在可能的情況下保留我在Scala中使用的文本比較庫。谷歌搜索讓我無法在Scala中找到這兩種算法。Scala的Metaphone或Soundex
最糟糕的情況我可以將這些算法轉換成Scala,但這並不理想。
http://commons.apache.org/codec/
我發現了Apache在Java中的Soundex和Metaphone的推理,但我更願意只在可能的情況下保留我在Scala中使用的文本比較庫。谷歌搜索讓我無法在Scala中找到這兩種算法。Scala的Metaphone或Soundex
最糟糕的情況我可以將這些算法轉換成Scala,但這並不理想。
http://commons.apache.org/codec/
不回答我的問題還是什麼,但一個可行的辦法是利用一個Java庫,並創建一些同伴對象在scala中幫助更適當地揭露它們,並允許編碼更有效地記錄自己。
//Metaphone companion object for org.apache.commons.codec.language.Metaphone in /lib/commons-codec-1.7
object Metaphone {
val metaphone = new Metaphone
metaphone setMaxCodeLen 5
def encode(str:String) : String = {
metaphone encode str
}
}
實現:
val str_meta = Metaphone encode "Starbucks"
+1當您想與Java庫交互時,建議您這樣做。永遠不要直接調用Java API。他們是技術甚至不包裝對象,仍然有一個下降的API。 – jwinandy
Java庫與Java的100%兼容,你希望你的項目是 「純粹」 的Scala或者有什麼不工作? –
這是一個很好的問題。有兩件事: 1.我找到的Java庫有依賴關係,並且有依賴關係。如果我不需要 ,我不希望整個100個文件庫僅用於2個函數。2.如果我們的團隊在java中有一些相關的功能,而在scala中有一些分散的周圍。當我們真的必須時,我寧願保留這樣的時間,而不是像metaphone或soundex那樣衆所周知和常見的東西。 – Commander