使用SQL Server 2016。
我在数据库中有一个表,其中包含我通过全文搜索通过“关键字”搜索的产品。我们的客户要求我们从停止列表中删除单个字符“ n”,以允许搜索“ fish nchips”之类的词(并非真实示例)。
但是,在更改停止列表并重建索引之后,我看到了意外的结果,尤其是等级为零:
SELECT * FROM CONTAINSTABLE (dbo.Products, Keywords, ' "no*"')
SELECT * FROM CONTAINSTABLE (dbo.Products, Keywords, ' "n*"')
给我以下结果:
如您所见,所有结果的排名都为0。我已经尝试过使用其他字符,并且得到了预期的RANK
。我已经通过以下方式检查了停靠站:
SELECT * FROM sys.fulltext_stoplists
SELECT * FROM sys.fulltext_stopwords
WHERE stoplist_id = 5 AND language_id = 1033
通常,我看不到返回等级0的理由。更让我感到困惑的是,我在同一台服务器上使用相同的索引和停止列表创建了另一个数据库,这不是问题。
我一直在研究这个问题,看到人们在FREETEXTTABLE
附近遇到这个问题,但是这里的问题并不是由于缺乏数据。
如果有人对我有任何想法,我可以检查一下以帮助追踪,将不胜感激。