SQL Server全文搜索领先通配符

ahe*_*ick 5 sql-server full-text-search wildcard

在看了这个 SO问题并进行自己的研究之后,看起来在使用全文搜索时你不能拥有一个领先的通配符.

所以在最简单的例子中,如果我有一个包含1列的表,如下所示:

表格1

硬币
造币
undercoin

select COLUMN1 from TABLE1 where COLUMN1 LIKE '%coin%' 会得到我想要的结果.

如何在列上启用FULL TEXT SEARCH时获得完全相同的结果?

以下两个查询返回完全相同的数据,这不是我想要的.

SELECT COLUMN1 FROM TABLE1 WHERE CONTAINS(COLUMN1, '"coin*"')

SELECT COLUMN1 FROM TABLE1 WHERE CONTAINS(COLUMN1, '"*coin*"')
Run Code Online (Sandbox Code Playgroud)

Tho*_*mas 9

全文搜索用于查找单词的词或词干.因此,它没有在"undercoin"中的任何地方找到"硬币"这个词.您寻求的是使用全文搜索的能力搜索后缀,并且它本身不会这样做.有一些hacky解决方法,如创建反向索引和搜索"nioc".

  • @alexanderg - 根据数据量,它可能会快许多个数量级.这是搜索索引或扫描整个表之间的区别(这是'%abc%`将执行的操作). (2认同)