我有一个包含多个字符串列的SQL服务器表。我需要编写一个应用程序,它获取一个字符串并在SQL Server表中搜索类似的字符串。如何查找与SQL Server中给定字符串类似的字符串?
例如,如果我给了“مختار”或“مختر”作为输入字符串,我应该从SQL表得到这些:
1 - مختاری
2 - شهاب مختاری
3 - شهاب الدین مختاری
我搜索网的解决方案,但我发现没有用处。我读过this question,但因为这不会帮助我:
- 我使用MS SQL Server的不MySQL的
- 我的表内容是用波斯语,所以我不能使用Levenshtein距离和类似的方法
- 我更喜欢仅限SQL Server解决方案,而不是基于索引或守护进程的解决方案。
最好的解决方案是帮助我们按相似性对结果进行排序的解决方案,但是,它是可选的。
你有什么建议吗?
感谢
是的,它更接近我在找什么。但考虑到相似因素的长度不是一个好主意。例如“测试”和“发现”根本不相似,但它们的长度是相等的。 – KiNG 2011-12-27 09:43:11
但是等一下,如果您搜索“test”,那么我编写的查询将不会提供“find”作为结果。 如果你搜索“测试”,并有“测试”,“寻找”,“测试”,并在你的数据库“测试”,结果将是: 测试 仪 测试 的顺序。如果您搜索“查找”,则只会提供1个结果(查找)。如果搜索“in”,将提供两个结果: 找到 测试 (按该顺序,由于长度的原因)。我不知道波斯语,但是如果您使用的是nvarchar列,那么无论您使用哪种语言,结果都是相同的。 – Gaspa79 2011-12-28 04:34:16
哦,是的,对不起,我没有看到'where'条款。但它仍然不能解决我的问题,因为我希望_find_与_fnd_匹配。 – KiNG 2011-12-28 08:41:20