如何在SQL Server的FreeTextTable()搜索中实现同义词匹配?
FreeTextTable() 同义词匹配问题解答
FreeTextTable() 本身不默认支持同义词查找,必须通过额外配置才能实现你需要的同义词匹配效果。
具体要点如下:
- 同义词匹配依赖SQL Server的同义词库(Thesaurus),默认状态下该功能未启用也无自定义配置。
- 要实现GLBT与LGBT+、cars与vehicles这类同义词搜索,需手动配置同义词库文件:
- 找到SQL Server安装目录下的同义词库文件,常规路径为
C:\Program Files\Microsoft SQL Server\<你的版本号>\MSSQL\FTData\tsenu.xml(不同版本路径可能略有调整)。 - 编辑该XML文件,添加自定义同义词组,示例配置如下:
<thesaurus xmlns="x-schema:tsSchema.xml"> <diacritics_sensitive>0</diacritics_sensitive> <!-- 配置性取向相关同义词 --> <expansion> <sub>GLBT</sub> <sub>LGBT+</sub> </expansion> <!-- 配置交通工具相关同义词 --> <expansion> <sub>cars</sub> <sub>vehicles</sub> </expansion> </thesaurus> - 配置完成后,执行SQL命令刷新同义词库(1033对应英文LCID,其他语言需替换对应ID):
EXEC sys.sp_fulltext_load_thesaurus_file 1033;
- 找到SQL Server安装目录下的同义词库文件,常规路径为
- 同时要确保你的目标表已经正确创建了全文索引,且索引包含存储LGBT+、vehicles这类文本的字段,否则同义词匹配也无法生效。
内容的提问来源于stack exchange,提问作者David Thielen
相关产品推荐
相关产品推荐

