0

我有一列包含来自世界各地不同用户的文本输入,我想对它们进行分组,以便彼此相似的字符串更接近。该列包含非英语语言的字符串,此外还可能包含拼写错误的单词。

我一直在研究 N-gram 和 Levenshtein 距离,但这些似乎需要我记住一个字符串来匹配行。

例如,我想

   |Comcast               | 
   |how to play basketball|
   |Walmart               |
   |www.Comcast.net       |
   |Wamlart               |
   |basketball            |

最终看起来像:

   |Comcast               | 
   |www.Comcast.net       |
   |how to play basketball|
   |basketball            |
   |Walmart               |
   |Wamlart               |

任何帮助,将不胜感激。谢谢你。

4

3 回答 3

1

SOUNDEX您可以尝试通过代码订购。

例如,

ORDER BY SOUNDEX(MyColumn)

但是,这将在较长的字符串上分解。使用 Double Metaphone 算法你可能会有更好的运气:

http://www.atomodo.com/code/double-metaphone/metaphone.sql/view

于 2012-04-18T19:05:09.707 回答
0

使用ORDER BY代替GROUP BY

SELECT * FROM table ORDER BY column ASC
SELECT * FROM table ORDER BY column DESC

该列将按字母顺序升序或降序

于 2012-04-18T19:13:28.600 回答
0

如果在显示数据之前所有字符串都需要删除诸如“.net”之类的内容,则可以执行以下操作:

SELECT column,ordercolumn FROM 
(
    SELECT column,REPLACE(column,'www.comcast.net','ComCast') ordercolumn
    FROM mytable
) A
ORDER BY ordercolumn,column;
于 2012-04-18T19:23:53.277 回答