簡體   English   中英

在SQL Server中使用全文搜索聯接兩個表

[英]JOIN two tables using full-text search in SQL Server

我有一種情況,我試圖基於部分匹配的文本數據來聯接兩個表。 我已閱讀的問題在SQL Server 2005中跨多個表,列使用全文搜索 ,它似乎是我最好的選擇是創建一個VIEW ,並在添加全文索引VIEW

讓我首先介紹一下局勢的背景。 我有一個Excel電子表格,我需要計算一些葯品價格,但是電子表格中的葯品名稱與我要提取價格信息的數據庫不完全匹配。 因此,我認為使用全文搜索可能是可行的方法。

到目前為止,我所做的是將電子表格導出為CSV文件,並使用BULK INSERT將數據導入到我的數據庫中。 現在,我的葯品數據庫在NDC上有一個主鍵,但是不幸的是,該信息在電子表格中不可用,否則我的工作會容易得多。

我基本上需要能夠匹配'AMLODIPINE TAB 5MG''AMLODIPINE BESYLATE 5MG TAB' 這只是一個例子,但是其他葯物是相似的。 我的問題是,我什至不知道如何創建一個VIEW來添加兩個列而不匹配它們。

是否可以在JOIN語句中使用全文搜索,例如:

SELECT i.Description, m.ProdDescAbbr
FROM dbo.ImportTable i
LEFT JOIN dbo.ManufNames m ON m.ProdDescAbbr <something similar to> i.Description

編輯:

並非所有葯物名稱都包含多余的單詞,我嘗試匹配的另一個示例是: 'ACYCLOVIR TAB 800MG''ACYCLOVIR 800MG TAB'

您可以添加一個

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 ,它使用全文本索引。 在這種情況下,也許功能要復雜得多,但我想分享一下。

Returns a table of zero, one, or more rows for those columns containing precise or fuzzy (less precise) matches to single words and phrases, the proximity of words within a certain distance of one another, or weighted matches

總的來說,我發現您需要先准備搜索條件(使其成為文本),然后再進行搜索。

例:

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];

http://msdn.microsoft.com/en-us/library/ms189760.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM