本文可帮助你解决在 SQL Server 字符数据上执行全文搜索时出现的问题,或者将 SQL 分布式查询与 Microsoft Index Server OLE DB 访问接口 (MSIDXS) 和前缀扩展搜索(例如,XYZ-A*)结合使用时。
适用范围:SQL Server
原始 KB 数: 200043
现象
在 SQL Server 字符数据上执行全文搜索时,或者将 SQL 分布式查询与 Microsoft Index Server OLE DB 访问接口(MSIDXS)和前缀扩展搜索用于包含连字符(例如“XYZ-A*”)的复合词时,生成的结果可能不如预期。
原因
全文搜索将单词视为不含空格或标点符号的字符串。 非字母数字字符的出现可以在搜索期间中断单词。 由于 SQL Server 全文搜索是基于单词的引擎,因此通常不考虑标点符号,在搜索索引时将被忽略。 因此,类似子CONTAINS
句的行与值匹配,找不到我的计算机会很昂贵。CONTAINS(testing, "computer-failure")
解决方法
若要解决此问题,请尝试以下方法之一:
仅当使用 SQL Server 全文索引设施时,才使用字母数字字符。
如果非字母数字字符必须在搜索条件(主要是短划线
-
字符)中使用,请使用 Transact-SQLLIKE
子句而不是FULLTEXT
CONTAINS
谓词。
详细信息
Microsoft SQL Server 版本 7.0 提供对 SQL Server 表中存储的字符数据执行全文查询的功能。 还可以将 SQL 分布式查询与 MSIDXS 提供程序配合使用来搜索文件系统数据。 不支持在邻近搜索中使用短划线(-
),可能会产生意外的结果。
参考
有关 SQL Server 全文搜索的详细信息,请参阅 SQL Server 联机丛书。
有关在 Microsoft Index Server (MSIDXS) 提供程序中使用 CONTAINS 子句的详细信息,请参阅 Windows NT 4.0 选项包文档中的 Index Server 文档。