簡體   English   中英

使用多個部分詞進行全文搜索

[英]Full Text Search Using Multiple Partial Words

我有一個 sql server 數據庫,里面有醫學描述。 我已經在上面創建了一個全文索引,但我仍在弄清楚它是如何工作的。

最簡單的例子是如果有Hypertensive heart disease的描述

現在他們希望能夠輸入hyp hea作為搜索詞並讓它返回。

所以從我讀過的內容來看,我的查詢似乎需要類似於

DECLARE @Term VARCHAR(100)
SET @Term = 'NEAR(''Hyper*'',''hea*'')'
SELECT * FROM Icd10Codes WHERE CONTAINS(Description, @Term)

如果我取出 Hypertensive 和 heart 的通配符,並輸入它有效的完整單詞,但添加通配符沒有任何回報。

如果它有任何區別,我正在使用 Sql Server 2017

所以這是一個奇怪的語法問題,沒有導致錯誤,但停止了搜索工作。

我把它改成

SELECT * FROM Icd10Codes where CONTAINS(description, '"hyper*" NEAR "hea*"')

這里的關鍵是我需要雙引號"而不是單引號。我假設它是兩個單引號,第一個轉義第二個,但它實際上是雙引號。上面的查詢完全按預期返回結果。

這將起作用:

SELECT * FROM Icd10Codes where SOUNDEX(description)=soundex('Hyp');

SELECT * FROM Icd10Codes where DIFFERENCE(description,'hyp hea')>=2;

你可以試試類似的語句。 您可以在此處找到詳盡的解釋。

像這樣:

SELECT * FROM Icd10Codes WHERE Icd10Codes LIKE '%hyp hea%';

然后不要把字符串放在那里,而是使用一個變量。

如果您需要搜索分離的部分單詞,如在搜索詞數組中,這會有點棘手,因為您需要動態構建 SQL 語句。

MSSQL 為全文搜索提供了一些功能。 你可以在這里找到那些。 其中之一是CONTAINS關鍵字:

SELECT column FROM table WHERE CONTAINS (column , 'string1 string2 string3');

暫無
暫無

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

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