在SQL Server中使用全文搜索连接两个表

在SQL Server中使用全文搜索连接两个表,sql,sql-server,full-text-search,Sql,Sql Server,Full Text Search,我遇到的情况是,我试图基于部分匹配的文本数据连接两个表。我已经阅读了这个问题,似乎我的最佳选择是创建一个视图,并在视图上添加全文索引 让我先介绍一下情况的背景。我有一个Excel电子表格,我需要计算一些药物的定价,但电子表格中的药物名称与我提取定价信息的数据库不完全匹配。因此,我认为使用全文搜索可能是一条出路 到目前为止,我所做的是将电子表格导出为CSV文件,并使用BULK INSERT将数据导入我的数据库。现在,我的药物数据库的主键是NDC,但不幸的是,电子表格上没有这些信息,否则我的工作会简

我遇到的情况是,我试图基于部分匹配的文本数据连接两个表。我已经阅读了这个问题,似乎我的最佳选择是创建一个
视图
,并在
视图
上添加全文索引

让我先介绍一下情况的背景。我有一个Excel电子表格,我需要计算一些药物的定价,但电子表格中的药物名称与我提取定价信息的数据库不完全匹配。因此,我认为使用全文搜索可能是一条出路

到目前为止,我所做的是将电子表格导出为CSV文件,并使用
BULK INSERT
将数据导入我的数据库。现在,我的药物数据库的主键是
NDC
,但不幸的是,电子表格上没有这些信息,否则我的工作会简单得多

我需要基本上能够匹配
“氨氯地平5MG片剂”
“苯磺酸氨氯地平5MG片剂”
。这只是一个例子,但其他药物是类似的。我的问题是,我甚至不知道如何创建一个
视图
,以便添加两个列,而不使它们匹配

有没有一种方法可以在
JOIN
语句中使用全文搜索,例如:

SELECT i.Description, m.ProdDescAbbr
FROM dbo.ImportTable i
LEFT JOIN dbo.ManufNames m ON m.ProdDescAbbr <something similar to> i.Description
选择i.说明,m.ProdDescAbbr
来自dbo.importable i
左连接dbo.ManufNames m ON m.ProdDescAbbr i.说明
编辑:

并非所有药物名称都会包含额外的单词,我试图匹配的另一个示例是:
阿昔洛韦800MG'
阿昔洛韦800MG'
您可以添加

CREATE VIEW view_name WITH SCHEMABINDING
AS
在SQL前面创建视图。那你就可以

CREATE UNIQUE CLUSTERED INDEX idx_name
ON view_name(Description, ProdDescAbbr)
那你可以

CREATE FULLTEXT INDEX ON view_name
这将允许您使用

WHERE CONTAINS( (Description, ProdDescAbbr), 'search_term')
在我的工作中,我看到了这个(我很喜欢)函数
CONTAINSTABLE
,它使用全文索引。在这种情况下,可能需要很多复杂的函数,但我想和大家分享一下

返回一个包含零行、一行或多行的表,这些列包含与单个单词和短语的精确或模糊(不太精确)匹配、单词之间在一定距离内的接近程度或加权匹配

总的来说,我认为您需要在查找之前准备搜索条件(使其成为文本)

例如:

SELECT select_list
FROM table AS FT_TBL 
INNER JOIN CONTAINSTABLE(table, column, contains_search_condition) AS KEY_TBL
   ON FT_TBL.unique_key_column = KEY_TBL.[KEY];

source

基本上,我需要
描述
字段作为查询
ProdDescAbbr
时的搜索词,如果这有意义的话。我不是手动指定搜索词,我需要根据
说明
ProdDescAbbr
字段的相似性将这两个表连接起来。我将尝试一下,看看是否可以将其应用于我的情况。谢谢