我在客户端数据库上进行全文搜索时遇到问题。该问题仅发生在客户端的数据库上,并且我无法在本地复制它,因此我认为它应该与数据库中的现有数据有关。
在存储过程中,我验证了不同符号的关键字,然后对其进行了处理并将结果分配给 @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 。
我没有直接访问服务器的权限,因此,如果您能给我一些建议,以便我在访问服务器时可以稍后进行测试,将不胜感激。
谢谢!
答案 0 :(得分:0)
几天后,我想到了每种情况,都找到了答案。 在检查全文目录的属性时,我注意到最后的填充日是 NULL 。我检查了全文搜索的日志,并看到以下错误:
在全文填充期间发生致命错误,导致该填充被取消
然后,我检查了数据库的错误日志,并意识到几天前该数据库空间不足,导致全文索引停止。 解决方案已经在日志文件中,我使用以下命令恢复填充,现在一切正常:
ALTER FULLTEXT INDEX ON table_name RESUME POPULATION
希望它对某人有帮助!