【问题标题】:Metaphone or Soundex for ScalaScala 的 Metaphone 或 Soundex
【发布时间】:2012-11-10 19:51:48
【问题描述】:

我发现 Apache 在 Java 中实现了 Soundex 和 Metaphone,但我希望尽可能保留我在 Scala 中使用的文本比较库。 Google 搜索对我在 Scala 中查找这些算法没有任何帮助。

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

http://commons.apache.org/codec/

【问题讨论】:

  • Java 库与 Java 100% 兼容,您希望您的项目是“纯粹的”Scala 还是有什么问题?
  • 这是一个很好的问题。两件事:1.我找到的Java库有依赖关系,那些有依赖关系。如果我不需要 2 个函数,我不希望我的项目中有一个完整的 100 个文件库只用于 2 个函数。我觉得如果我们的团队在 java 中有一些相关的函数,而在 scala 中有一些分散在周围,事情会很快变得混乱.我宁愿在我们真正需要的时候才这样做,而不是为了像变音或 soundex 这样众所周知和常见的事情。

标签: scala text-comparison


【解决方案1】:

【讨论】:

  • 太棒了。非常感谢
【解决方案2】:

不回答我自己的问题或任何问题,但一个可行的选择是利用 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 的技术。
猜你喜欢
  • 2012-07-19
  • 2016-09-19
  • 2012-04-04
  • 1970-01-01
  • 2011-03-14
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多