Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala的变音电话或Soundex_Scala_Text Comparison - Fatal编程技术网

Scala的变音电话或Soundex

Scala的变音电话或Soundex,scala,text-comparison,Scala,Text Comparison,我发现Apache在Java中实现了Soundex和Metaphone,但我更愿意保留我在Scala中使用的文本比较库,如果可能的话。在Scala中搜索这些算法时,谷歌搜索没有给我带来任何有用的结果 最坏情况下,我可以将这些算法转换成Scala,但这并不理想 您正在从以下位置查找Stringmetric: 不回答我自己的问题,但一个可行的选择是利用Java库并在scala中创建一些伴生对象,以帮助更恰当地公开它们,并允许代码更有效地记录自身 //Metaphone companion objec

我发现Apache在Java中实现了Soundex和Metaphone,但我更愿意保留我在Scala中使用的文本比较库,如果可能的话。在Scala中搜索这些算法时,谷歌搜索没有给我带来任何有用的结果

最坏情况下,我可以将这些算法转换成Scala,但这并不理想


您正在从以下位置查找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的技术。