FullText Index - 从另一个表中搜索值

时间:2014-03-24 14:36:02

标签: tsql full-text-search contains full-text-indexing

在SQL Server 2008中,是否可以使用全文索引语法来运行这样的查询?

SELECT *
FROM TABLE_TO_SEARCH S,
TABLE_WITH_STRINGS_TO_SEARCH SS
WHERE 
   CONTAINS(S.WHOLE_NAME,SS.FIRST_NAME) 
OR CONTAINS(S.WHOLE_NAME,SS.LAST_NAME)

我需要在表TABLE_TO_SEARCH,WHOLE_NAME列中搜索FIRST_NAME,该列包含全文索引。它似乎不是一个有效的查询...使用全文索引搜索是否有任何解决方法?

稍后编辑:

以下是商业案例:每天晚上我都会从几个网站上下载有关"黑名单"个人并以此格式将其插入表格中:WholeName, LastName, FirstName, MiddleName。但是数据是混乱的,因为WholeName不一定包含last,first或middle名称,或者WholeName为null,而其他3个字段具有值,或者这4个字段中的每一个都为null,依此类推。此外,数据可能会重演,因为一个列入黑名单的个人可能来自其中2个以上的网站。我需要做的是根据我们客户的FirstLast名称将这些数据与我们的客户数据进行比较混淆,并给出匹配的得分(排名)反对我们从这些网站下载的文件。

首先,我尝试使用charindexlike运营商,但我无法根据此创建评分算法,而且仅花费6个小时来比较我们的客户的第一个和仅包含WholeName表中TABLE_TO_SEARCH列的姓氏。我认为也许实现full_text索引它会变得更容易和更快但是......显然我错了。

有人处理过这样的任务吗?如果是这样,最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

略过http://technet.microsoft.com/en-us/library/ms187787.aspxhttp://technet.microsoft.com/en-us/library/ms142571.aspx之后,我认为不可能以这种方式进行搜索。不仅如此,但似乎这种类型的索引无论如何都不能很好地与名称配合使用。

如果您关心检查一个名称,那么您需要做的就是将这些值设置为变量。此方法允许您使用全文索引。

否则,我建议拆分WHOLE_NAME列(如果名字和姓氏之间有空格或唯一字符),并将每个部分与其他列进行比较。如果您正在使用庞大的数据集,您可能希望尝试在临时表级别执行此操作并创建索引。

祝你好运!