代码之家  ›  专栏  ›  技术社区  ›  Jaroslav Záruba

搜索数十或数百个短文本字符串的列表,按相关性排序

  •  0
  • Jaroslav Záruba  · 技术社区  · 14 年前

    我有一个要搜索的人的列表。我需要知道每一项与它正在测试的字符串“多少”匹配。

    这个名单相当小,目前有100多个名字,很可能不会很快达到1000个。
    因此,我假设将整个列表保存在内存中,并使用Java提供的一些东西进行搜索,或者使用一些只实现一个或两个测试算法的小型库。(换句话说,不引入任何复杂/过度终止的解决方案来存储索引或依赖数据库。)

    在这种情况下,你会选择什么?

    编辑:看来列文施泰因和我所需要的最接近。只有当搜索查询为“john”且列表中的名称明显更长时,才容易被愚弄。

    4 回复  |  直到 13 年前
        1
  •  1
  •   Mikos    14 年前

    您应该看看各种字符串比较算法,看看哪一种最适合您的数据。可供选择的有Jaro Winkler、Smith Waterman等。 SimMetrics -一个F/OSS库,提供一组非常全面的字符串比较算法。

        2
  •  1
  •   Vijay Mathew Chor-ming Lung    14 年前

    如果你要找一个“多少钱”的匹配,你应该使用 Soundex . Here 是该算法的Java实现。

        4
  •  1
  •   ameykpatil    13 年前

    根据我的说法,Jaro Winkler算法将最适合您的需求。 这里是一个 Short summary of Jaro-Winkler Distance Algo 比较不同算法的PDF之一--> Link to PDF