Scala的变音电话或Soundex
我发现Apache在Java中实现了Soundex和Metaphone,但我更愿意保留我在Scala中使用的文本比较库,如果可能的话。在Scala中搜索这些算法时,谷歌搜索没有给我带来任何有用的结果 最坏情况下,我可以将这些算法转换成Scala,但这并不理想Scala的变音电话或Soundex,scala,text-comparison,Scala,Text Comparison,我发现Apache在Java中实现了Soundex和Metaphone,但我更愿意保留我在Scala中使用的文本比较库,如果可能的话。在Scala中搜索这些算法时,谷歌搜索没有给我带来任何有用的结果 最坏情况下,我可以将这些算法转换成Scala,但这并不理想 您正在从以下位置查找Stringmetric: 不回答我自己的问题,但一个可行的选择是利用Java库并在scala中创建一些伴生对象,以帮助更恰当地公开它们,并允许代码更有效地记录自身 //Metaphone companion objec
您正在从以下位置查找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"
Java库与Java是100%兼容的,您希望您的项目是“纯”Scala还是有些东西不起作用?这是一个很好的问题。两件事:1。我找到的Java库有依赖项,而那些库也有依赖项。我不想在我的项目中有一个完整的100个文件库,如果我不需要2个函数的话。我觉得如果我们的团队在java和scala中都有一些相关的函数,事情会很快变得一团糟。我宁愿在我们确实需要的时候做这些,而不是像变音电话或soundex这样众所周知和常见的东西。非常感谢您希望与Java库进行互操作时推荐使用+1。永远不要直接调用JavaAPI。它们是甚至不包装对象并且仍然具有下降API的技术。