首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于中间名称搜索的LIKE和FTS的替代方案

用于中间名称搜索的LIKE和FTS的替代方案
EN

Database Administration用户
提问于 2012-01-11 22:16:32
回答 1查看 2.2K关注 0票数 4

我有一个问题,在搜索公司名称、名字、姓氏等方面,“%”和全文搜索的替代方案是什么。

类似的‘%’导致表扫描,但是返回包含名称的确切结果。FTS不断返回“基本相同”的结果。FTS通常作为一种替代方案,但我不明白为什么。这不适用于非结构化数据搜索吗?在我看来,对于像名字这样的结构化数据来说,这是无可替代的。

我也尝试过SOUNDEX、Levenshtein等的实现,但是没有任何东西给我想要的性能。

我真的很好奇专家是怎么处理这件事的!

我已经很害怕了:)。我有几个“名字”,比如组织名称,事实上,名字,姓氏等等。所以我们的用户有时只想使用名称的一部分,而搜索的部分是在名字的中间。

我试过以下几种方法

代码语言:javascript
运行
复制
SELECT  *
FROM    [dbo].[companies] a 
WHERE   a.[organisationname] LIKE '%FEK%'

这将返回60行,这是首选结果。但是,由于第一个%通配符会导致表扫描。

使用FTS时

代码语言:javascript
运行
复制
SELECT  * 
FROM    [dbo].[companies] a 
WHERE   CONTAINS(a.[organisationname], '"*FEK*"')

这将返回11行。似乎在这个词被删除之前的通配符。

代码语言:javascript
运行
复制
SELECT  * 
FROM    [dbo].[companies] a 
WHERE   CONTAINS(a.[organisationname], 'FORMSOF(INFLECTIONAL, "FEK")')

这将返回2行。屈折没有任何影响(很可能是“当然”)。

希望您能给我一个提示,如何更好地使用FTS在这,或可能另一种选择。

EN

回答 1

Database Administration用户

发布于 2012-01-12 08:23:37

在Server中搜索文本数据的方法只有两种,您刚刚消除了这两种方法。我想你有一个名字字段,里面有名字和姓,你想要搜索每个名字叫约翰的人吗?你能举几个例子来说明哪些东西不能正常工作吗?

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/10551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档