在我的 Sql Server 数据库中,我有一个表,其中包含一个名为 DataStructure 的 nvarchar(4000) 字段。 在此表中,我有 2 条记录将以下数据放入 DataStructure 字段:
Record 1:
{"FileName":"ACO23004000","SourceUrl":"http://mysite/TEST.TIF"}
Record 2:
{"FileName":"ACO23004000","SourceUrl":"http://mysite.fm/TEST.TIF"}
我尝试在 SqlServer 中使用 Contains 命令(全文搜索)搜索值 ACO23004000,如下所示:
Select *
from MyTable
where CONTAINS(DataStructure, '"*ACO23004000*"')
查询只返回第一条记录,似乎文本中的“.fm”值阻止了第二条记录的搜索。
我该如何解决这个问题?某些字符是否可能阻止 CONTAINS 命令正常工作?
创建一个自定义同义词库文件名CustomThesaurus.xml,这样就可以定义一个替换规则,将“.fm”替换为空字符串。
文本中的句点 (.) 会阻止全文搜索正常工作,因为它是分词符。您可以创建一个用空字符串替换“.fm”的自定义同义词库文件,以使全文搜索引擎将“ACO23004000.fm”视为单个词。在 SQL Server 中注册同义词库文件,并在全文搜索查询中使用 FORMSOF(THESAURUS, "ACO23004000.fm") 函数通过自定义同义词库扩展搜索“ACO23004000”。