使用 SQL Server 2016。
我在数据库中有一个表,其中包含我使用全文搜索通过“关键字”搜索的产品。我们的客户要求我们从停用词列表中删除单个字符“n”,以允许搜索“鱼 n 薯条”等术语(不是真实示例)。
但是,在更改停止列表并重建索引后,我看到了意想不到的结果,特别是零等级:
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
但是这里的问题并不在于缺乏数据。
如果有人对我可以检查以帮助追踪它的事情有任何想法,我们将不胜感激。