在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
字段的相似性将这两个表连接起来。我将尝试一下,看看是否可以将其应用于我的情况。谢谢