SQL Server全文搜索领先通配符

时间:2010-04-18 23:13:37

标签: sql-server full-text-search wildcard

在查看了this SO问题并进行自己的研究后,看来在使用全文搜索时你不能拥有一张前导通配符。

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

TABLE1

硬币
造币
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*"')

1 个答案:

答案 0 :(得分:9)

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