我有一个包含来自世界各地用户的文本输入的列,我想将它们分组,以便彼此相似的字符串更加接近。该列包含非英语语言的字符串,此外还包含拼写错误的单词。
我一直在研究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 |
任何帮助将不胜感激。 谢谢。
答案 0 :(得分:1)
您可以尝试按SOUNDEX
代码订购。
,例如,
ORDER BY SOUNDEX(MyColumn)
然而,这将分解更长的字符串。使用Double Metaphone算法可能会有更好的运气:
http://www.atomodo.com/code/double-metaphone/metaphone.sql/view
答案 1 :(得分:0)
使用ORDER BY
代替GROUP BY
SELECT * FROM table ORDER BY column ASC
SELECT * FROM table ORDER BY column DESC
该列将按字母顺序升序或降序排序
答案 2 :(得分:0)
如果在显示数据之前所有字符串都有像'.net'那样删除的东西,你可以这样做:
SELECT column,ordercolumn FROM
(
SELECT column,REPLACE(column,'www.comcast.net','ComCast') ordercolumn
FROM mytable
) A
ORDER BY ordercolumn,column;