【发布时间】:2013-08-26 21:43:33
【问题描述】:
我们有一个位置搜索页面,这给我们带来了前所未有的挑战。
在我们的数据库中,我们有一个带有相应地理编码的城市、州等列表。到目前为止,一切都很有趣......
我们在一个名为“威斯康星州黑河瀑布”的城市有两个地点,我们最近在“威斯康星州河瀑布”开设了一个。
所以我们的表有如下记录:
Location City State
-------------------------------------
1 Black River Falls WI
2 Black River Falls WI
3 River Falls WI
显然,我们的查询使用“LIKE”子句来匹配城市,但是当客户搜索文本“River Falls”时,在搜索结果中,显示的第一个结果始终是“Black River Falls”。
在我们的应用程序中,我们总是使用第一个匹配项,并将其用作默认值。 (我们可以改变它,但这将是很多未列入预算的工作)
我知道我可以简单地更改排序顺序,让“River Falls”首先出现,但这是一个草率的解决方案,仅适用于这种情况。
我想知道是否有办法通过 T-SQL (SQL Server 2008r2) 按“最佳匹配”排序,如果我们搜索“River Falls, WI”,“River Falls”将“获胜”如果我们搜索“Black River Falls”WI,“Black River Falls”就可以了。
【问题讨论】:
-
SSIS 有一个Fuzzy Lookup 转换,它将提供相似性和信心。 MDS还有一个相似函数more detail