Sql Server CONTAINS 函数不适用于某些 url 数据

问题描述 投票:0回答:1

在我的 Sql Server 数据库中,我有一个表,其中包含一个名为 DataStructurenvarchar(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 命令正常工作?

sql-server contains
1个回答
0
投票

创建一个自定义同义词库文件名CustomThesaurus.xml,这样就可以定义一个替换规则,将“.fm”替换为空字符串。

文本中的句点 (.) 会阻止全文搜索正常工作,因为它是分词符。您可以创建一个用空字符串替换“.fm”的自定义同义词库文件,以使全文搜索引擎将“ACO23004000.fm”视为单个词。在 SQL Server 中注册同义词库文件,并在全文搜索查询中使用 FORMSOF(THESAURUS, "ACO23004000.fm") 函数通过自定义同义词库扩展搜索“ACO23004000”。

© www.soinside.com 2019 - 2024. All rights reserved.