全文搜索是否适用于字符?

Kha*_*mir 0 sql-server-2008 full-text-search

我已经成功地FTS在我们存储药物名称的列上创建了一个索引,例如:

Amoxicillin 250mg capsules 21 capsule
Verapamil 160mg tablets 100 tablet
Run Code Online (Sandbox Code Playgroud)

当我搜索参数 Amoxicillintablets它工作正常。

但是当我搜索'%Amoxi%'blets它没有想出答案时。但是,相同的关键字与Like运算符一起使用。

select * from AMPP as a
WHERE Contains(A.[NM] ,'%Amoxici%')
Run Code Online (Sandbox Code Playgroud)

以上查询没有结果。但是下面的查询在结果中返回 140 行。

select * from AMPP as a
WHERE Contains(A.[NM] ,'%Amoxicillin%')

select * from AMPP as a
WHERE a.nm like '%Amoxici%'
Run Code Online (Sandbox Code Playgroud)

小智 5

CONTAINS 和 LIKE 是两种完全不同的野兽。

由于它是全文索引搜索,通配符 (% %) 变得多余。

对于您的查询,我相信您需要执行以下操作:

SELECT * 
FROM AMPP AS A
WHERE CONTAINS(A.NM, '"Amoxici*"'); 
Run Code Online (Sandbox Code Playgroud)

请参阅MS 联机丛书