全文搜索不会返回包含搜索关键字的行

时间:2018-10-21 04:54:04

标签: sql-server full-text-search

我在客户端数据库上进行全文搜索时遇到问题。该问题仅发生在客户端的数据库上,并且我无法在本地复制它,因此我认为它应该与数据库中的现有数据有关。

在存储过程中,我验证了不同符号的关键字,然后对其进行了处理并将结果分配给 @SearchString 。如果我的关键字不包含引号的空格,那么我将在所有列均带有全文索引的表上运行以下查询:

SELECT [KEY] FROM CONTAINSTABLE([TableName], *, @SearchString, 1000)

我要传递给存储过程的关键字是 I-MU-MUMB-ISC-2909 ,在操作后,我分配了“ I-MU-MUMB-ISC-2909 * “ @SearchString 。即使其中一列中存在确切的字符串,查询也不会返回任何结果。创建此全文索引时,我使用了 STOPLIST = OFF ,所以我的问题不应该与停用词有关。另外,如果我搜索 I-MU-MUMB-ISC-2908 ,(字符串以8而不是9结尾),在同一列中具有该字符串的另一行将显示在结果中。

我什至修改了select并使用了包含关键字的特定列名称,但同样没有结果。

如果有帮助,我注意到这两行以及几百行在其中一列中具有 I-MU-MUMB

我没有直接访问服务器的权限,因此,如果您能给我一些建议,以便我在访问服务器时可以稍后进行测试,将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

几天后,我想到了每种情况,都找到了答案。 在检查全文目录的属性时,我注意到最后的填充日是 NULL 。我检查了全文搜索的日志,并看到以下错误:

  

在全文填充期间发生致命错误,导致该填充被取消

然后,我检查了数据库的错误日志,并意识到几天前该数据库空间不足,导致全文索引停止。 解决方案已经在日志文件中,我使用以下命令恢复填充,现在一切正常:

ALTER FULLTEXT INDEX ON table_name RESUME POPULATION

希望它对某人有帮助!