【发布时间】:2011-08-14 02:07:05
【问题描述】:
我想做一个搜索功能,根据“听起来像”匹配进行搜索。
例如,假设我有一个如下所示的公司列表(假设我们也生活在 Bizzaro 世界):
- 极致
- Alusion cite LTD
- 一切就绪的幻觉网站INC
- 除同意
- 同意视线
(或名称类似的东西...George 或 Jeorge ?“Yah-way”或“ye-hova”?)
当有人搜索“听起来像”soundex("site") == S230 的内容时,他们应该也会看到“Sight”的结果。
正如大多数以前使用过 soudnex 的人已经知道的那样,普通的子字符串匹配显然不会这样做。
我正在尝试在脑海中研究如何制作一个可以基于此匹配的 WHERE 子句,因此我想运行一个 soundex,而不是典型的 WHERE company LIKE input。显然,如果我对整个公司名称运行 soundex,我将无法进行子字符串搜索(例如,搜索“ALL”的用户永远不会匹配“All ready”的 soundex)。 Soundex 对每个单词进行拆分也可能不值得,所以我不确定运行 soundex 的所有组合是否是一个好主意……或者即使这在具有超过 1000 条记录的数据库中在计算上是可行的。
基本上,我想要的互动是(在办公室或其他地方)Tom 对 Sally 说“那个名字有点像 Rebekkah Schwartzkopff”,并且可以通过语音搜索模糊匹配。
显然,由于 soudnex,我们会遇到非英文名称公司的问题,但我愿意在这个问题上妥协。
我想在不向数据库或存储过程中添加任何内容的情况下执行此操作。
【问题讨论】:
标签: sql-server tsql sql-server-2008