全文搜索没有 return 包含搜索关键字的行
Full-text search doesn't return the row containing the searched keyword
我在对客户数据库进行全文搜索时遇到问题。这个问题只发生在客户端的数据库上,我在本地无法重现,所以我想应该和数据库中已有的数据有关。
在存储过程中,我验证了不同符号的关键字,然后对其进行操作并将结果分配给 @SearchString。如果我的关键字不包含引号的任何空格,我 运行 在 table 上使用所有列的全文索引进行以下查询:
SELECT [KEY] FROM CONTAINSTABLE([TableName], *, @SearchString, 1000)
我传递给存储过程的关键字是 I-MU-MUMB-ISC-2909 并且在操作之后,我分配 "I-MU-MUMB-ISC-2909*" 到 @SearchString。即使其中一列中存在确切的字符串,查询也不会 return 任何结果。我在创建这个全文索引时使用了STOPLIST = OFF,所以我的问题应该不是停用词。此外,如果我搜索 I-MU-MUMB-ISC-2908,(字符串以 8 而不是 9 结尾),结果中会显示同一列中包含此字符串的另一行.
我什至修改了 select 并使用了包含关键字的特定列名,但还是没有结果。
如果有帮助,我注意到这两行以及另外几百行的其中一列中有 I-MU-MUMB。
我没有直接访问服务器的权限,所以如果您能给我一些建议,我将不胜感激,以便我可以在访问服务器后进行测试。
谢谢!
经过几天的测试,我找到了我想到的每个场景后的答案。
在检查全文目录的属性时,我注意到最后一个人口日是NULL。我查看了全文搜索的日志,看到如下错误:
a fatal error occurred during a full-text population and caused the population to be cancelled
然后查看数据库的错误日志,发现数据库运行前几天space出来了,导致全文索引停止。
解决方案已经在日志文件中,我使用以下命令恢复了填充,现在一切正常:
ALTER FULLTEXT INDEX ON table_name RESUME POPULATION
希望对大家有所帮助!
我在对客户数据库进行全文搜索时遇到问题。这个问题只发生在客户端的数据库上,我在本地无法重现,所以我想应该和数据库中已有的数据有关。
在存储过程中,我验证了不同符号的关键字,然后对其进行操作并将结果分配给 @SearchString。如果我的关键字不包含引号的任何空格,我 运行 在 table 上使用所有列的全文索引进行以下查询:
SELECT [KEY] FROM CONTAINSTABLE([TableName], *, @SearchString, 1000)
我传递给存储过程的关键字是 I-MU-MUMB-ISC-2909 并且在操作之后,我分配 "I-MU-MUMB-ISC-2909*" 到 @SearchString。即使其中一列中存在确切的字符串,查询也不会 return 任何结果。我在创建这个全文索引时使用了STOPLIST = OFF,所以我的问题应该不是停用词。此外,如果我搜索 I-MU-MUMB-ISC-2908,(字符串以 8 而不是 9 结尾),结果中会显示同一列中包含此字符串的另一行.
我什至修改了 select 并使用了包含关键字的特定列名,但还是没有结果。
如果有帮助,我注意到这两行以及另外几百行的其中一列中有 I-MU-MUMB。
我没有直接访问服务器的权限,所以如果您能给我一些建议,我将不胜感激,以便我可以在访问服务器后进行测试。
谢谢!
经过几天的测试,我找到了我想到的每个场景后的答案。 在检查全文目录的属性时,我注意到最后一个人口日是NULL。我查看了全文搜索的日志,看到如下错误:
a fatal error occurred during a full-text population and caused the population to be cancelled
然后查看数据库的错误日志,发现数据库运行前几天space出来了,导致全文索引停止。 解决方案已经在日志文件中,我使用以下命令恢复了填充,现在一切正常:
ALTER FULLTEXT INDEX ON table_name RESUME POPULATION
希望对大家有所帮助!