我有一个问题,在搜索公司名称、名字、姓氏等方面,“%”和全文搜索的替代方案是什么。
类似的‘%’导致表扫描,但是返回包含名称的确切结果。FTS不断返回“基本相同”的结果。FTS通常作为一种替代方案,但我不明白为什么。这不适用于非结构化数据搜索吗?在我看来,对于像名字这样的结构化数据来说,这是无可替代的。
我也尝试过SOUNDEX、Levenshtein等的实现,但是没有任何东西给我想要的性能。
我真的很好奇专家是怎么处理这件事的!
我已经很害怕了:)。我有几个“名字”,比如组织名称,事实上,名字,姓氏等等。所以我们的用户有时只想使用名称的一部分,而搜索的部分是在名字的中间。
我试过以下几种方法
SELECT *
FROM [dbo].[companies] a
WHERE a.[organisationname] LIKE '%FEK%'
这将返回60行,这是首选结果。但是,由于第一个%通配符会导致表扫描。
使用FTS时
SELECT *
FROM [dbo].[companies] a
WHERE CONTAINS(a.[organisationname], '"*FEK*"')
这将返回11行。似乎在这个词被删除之前的通配符。
SELECT *
FROM [dbo].[companies] a
WHERE CONTAINS(a.[organisationname], 'FORMSOF(INFLECTIONAL, "FEK")')
这将返回2行。屈折没有任何影响(很可能是“当然”)。
希望您能给我一个提示,如何更好地使用FTS在这,或可能另一种选择。
发布于 2012-01-12 08:23:37
在Server中搜索文本数据的方法只有两种,您刚刚消除了这两种方法。我想你有一个名字字段,里面有名字和姓,你想要搜索每个名字叫约翰的人吗?你能举几个例子来说明哪些东西不能正常工作吗?
https://dba.stackexchange.com/questions/10551
复制相似问题