3

SQL Server (2000) Soundex 函数是否适用于亚洲字符集?我在查询中使用它,它似乎没有正常工作,但我意识到这可能是因为我不知道如何阅读中文......

此外,是否还有其他语言可能无法使用该功能?(例如俄语)

谢谢你,
弗兰克

4

4 回答 4

3

Soundex 相当特定于英语 - 它可能适用于其他语言,也可能不适用于其他语言。新西兰发生的一个例子是尝试使用 Soundex 进行患者姓名匹配。不幸的是,太平洋岛屿名称不能很好地与 Soundex 配合使用,在许多情况下会散列到相同的小值集。必须使用不同的算法。

你的旅费可能会改变。在较新版本的 SQL Server 上,您可以编写一个 CLR 函数来执行一些其他计算。

于 2008-11-18T20:57:50.390 回答
2

按照设计,它最适用于使用 ASCII 字符集的英语句子。我在罗马尼亚的一个项目中使用了它,在那里我将罗马尼亚语特殊字符替换为听起来或多或少相同的相应 ASCII 字符。它并不完美,但就我而言,它总比没有好。

我认为你在亚洲字符集上应用 SOUNDEX 不会有很大的成功。

于 2008-11-18T20:11:58.330 回答
2

我知道旧版本的 SQLServer 中的 soundex 忽略了任何非英语字符。我相信它甚至不能处理 Latin-1,更不用说更奇特的东西了。

我从来没有在 SQL2k 中过多地处理 soundex,我所知道的只是它不能正确处理阿拉伯语。这也可能扩展到其他非拉丁字符集。

在任何情况下,即使除了字符集问题,基于 soundex 的算法也不太可能为非英语语言产生可接受的结果。Soundex 专门设计用于处理名称的英语发音(主要是西欧血统的名称),并且在该用途之外不能很好地发挥作用。您通常最好研究几种 soundex 变体或其他不相关的语音相似性算法中的任何一种,这些算​​法旨在解决相关语言的问题。

于 2008-11-18T20:44:48.280 回答
0

您可以使用类似 Levenshtein distance 的算法。该算法有多种实现方式作为用户定义的函数,您可以在SELECT语句中使用它们。

于 2021-08-24T17:54:03.630 回答