我发现 Apache 在 Java 中实现了 Soundex 和 Metaphone,但我宁愿只在可能的情况下保留我在 Scala 中使用的文本比较库。谷歌搜索没有让我在 Scala 中找到这些算法中的任何一个。
在最坏的情况下,我可以将这些算法翻译成 Scala,但这并不理想。
我发现 Apache 在 Java 中实现了 Soundex 和 Metaphone,但我宁愿只在可能的情况下保留我在 Scala 中使用的文本比较库。谷歌搜索没有让我在 Scala 中找到这些算法中的任何一个。
在最坏的情况下,我可以将这些算法翻译成 Scala,但这并不理想。
您正在寻找来自https://stackoverflow.com/users/554647/rocky-madden的 Stringmetric :
不回答我自己的问题或任何事情,但一个可行的选择是利用 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"