我有一个sql server数据库,里面有医学描述,我已经在上面创建了一个全文索引,但是我还在弄清楚它是如何工作的。
最简单的示例是,如果存在Hypertensive heart disease
的描述
现在,他们希望能够键入hyp hea
作为搜索项,并让它返回。
从我所读到的内容来看,我的查询应该类似于
DECLARE @Term VARCHAR(100)
SET @Term = 'NEAR(''Hyper*'',''hea*'')'
SELECT * FROM Icd10Codes WHERE CONTAINS(Description, @Term)
如果我把高血压和心脏的通配符拿出来,打出完整的单词,它会起作用,但是把通配符加进去什么也不会返回。
如果有什么不同的话,我使用的是Sql Server 2017
4条答案
按热度按时间avkwfej41#
因此,这是一个奇怪的语法问题,没有导致错误,但停止了搜索工作。
我改成了
SELECT * FROM Icd10Codes where CONTAINS(description, '"hyper*" NEAR "hea*"')
这里的关键是我需要双引号
"
,而不是单引号。我假设它是两个单引号,第一个用于转义第二个,但实际上它是双引号。上面的查询返回的结果与预期完全相同。mbjcgjjk2#
这是可行的:
8zzbczxx3#
你可以试试like语句,你可以找到一个详尽的解释。
就像这样:
而不是把字符串放在那里,而是用一个变量。
如果您需要搜索分开的部分单词,比如在搜索词数组中,那么这就有点棘手了,因为您需要动态地构建SQL语句。
MSSQL为全文搜索提供了一些功能。您可以找到这些here。其中之一是
CONTAINS
关键字:x7rlezfr4#
对我来说-这有更多的里程。创建一个计算行与字段作为全文搜索。全名/公司/姓氏都可搜索。