有一个表,就一个
id word
1 India
2 grass
........
现在有一个单词如glass,如何查找出与glass相似的单词,我的想法是,比较各单词的字母相同的个数,比如说glass有4个字母与grass所以就要找出grass,请高手看能否用sql语句实现,谢谢!
id word
1 India
2 grass
........
现在有一个单词如glass,如何查找出与glass相似的单词,我的想法是,比较各单词的字母相同的个数,比如说glass有4个字母与grass所以就要找出grass,请高手看能否用sql语句实现,谢谢!
access里面的全文索引怎么做??学习一下 谢谢
---msql 可以用 like
.. where 字段 like 'gras%'
DIFFERENCE()按照发音比较两个字符串。当你不知道一个名字的确切拼写,但多少知道一点它的发音时,使用这
两个函数将有助于你取出该记录。例如,如果你建立一个Internet目录,你也许想增加一个选项,允许访问者按照站点名的发音来搜索站点,而不是
按名字的拼写。考虑如下的语句:SELECT site_name FROM site_directory WHERE DIFFERENCE(site_name , ‘Microsoft’>3这个语句使用函数DEFFERENCE()来取得其名字的发音与Microsoft非常相似的站点。函数DIFFERENCE()返回一个
0到4之间的数字。如果该函数返回4,表示发音非常相近;如果该函数返回0,说明这两个字符串的发音相差很大。例如,上面的语句将返回站点名Microsoft和Macrosoft。这两个名字的发音与Microsoft都很相似。如果你把上一语
句中的大于3改为大于2,那么名为Zicrosoft和Megasoft的站点也将被返回。最后,如果你只需要差别等级大于1即
可,则名为Picosoft和Minisoft的站点也将被匹配。要深入了解函数DIFFERENCE()是如何工作的,你可以用函数SOUNDEX()来返回函数DIFFERENCE()所使用的音标
码。这里有一个例子:SELECT site_name ‘site name’,SOUNDEX(site_name) ‘sounds like’这个语句选取字段site_name的所有数据及其音标码。下面是这个查询的结果:site name sounds like---------------------Yahoo Y000Mahoo M000Microsoft M262Macrosoft M262Minisoft M521Microshoft M262Zicrosoft Z262Zaposoft Z121Millisoft M421Nanosoft N521Megasoft M221Picosoft P221(12 row(s) affected)如果你仔细看一下音标码,你会注意到音标码的第一个字母与字段值的第一个字母相同。例如,Yahoo和Mahoo的
音标码只有第一个字母不同。你还可以发现Microsoft和Macrosoft的音标码完全相同。函数DIFFERENDE()比较两个字符串的第一个字母和所有的辅音字母。该函数忽略任何元音字母(包括y),除非
一个元音字母是一个字符串的第一个字母。不幸的是,使用SOUNDEX()和DIFFERENCE()有一个欠缺。WHERE子句中包含这两个函数的查询执行起来效果不好。
因此,你应该小心使用这两个函数。
然後按照相同規則排序重組
然後再模糊匹配~~
每一个单词都可以变换成 a1d1i2n1 这样的类型
如上表变成
1 india a1d1i2n1
2 grass a1g1r1s2
然后再去判断。
具体算法思路,建议参考《编程珠玑Ⅱ》里,有关这个算法的介绍,
网上应该有的下电子书...