全文搜索 - 同义词库文件未加载/工作

Bic*_*ick 4 sql-server full-text-search thesaurus sql-server-2012

我正在尝试按照教程在查询全文搜索时设置同义词库文件.

我删除了以下文件中的注释

D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\tseng.xml
D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\tsglobal.xml
Run Code Online (Sandbox Code Playgroud)

所以现在它包含默认的同义词(例如jog用run替换,反之亦然).

现在,我使用了加载同义词库文件

EXEC sys.sp_fulltext_load_thesaurus_file 1033;
Run Code Online (Sandbox Code Playgroud)

我用我来测试我的词库

SELECT * FROM sys.dm_fts_parser ('FORMSOF(THESAURUS,"running")', 1033, 0, 0)
Run Code Online (Sandbox Code Playgroud)

我只得到一行完全匹配

(注意:

 SELECT * FROM sys.dm_fts_parser ('FORMSOF(Inflectional,"running")', 1033, 0, 0)
Run Code Online (Sandbox Code Playgroud)

返回所有"RUN"变形)

我甚至尝试通过adventureWorks2012选择(用"jog"更新几行后)

SELECT Description
FROM Production.ProductDescription
WHERE FREETEXT(Description, 'jog')
Run Code Online (Sandbox Code Playgroud)

什么都没有归还.有任何想法吗?谢谢.

Thr*_*onk 6

D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\tseng.xml 
Run Code Online (Sandbox Code Playgroud)

英国英语的文件,您指定的是美国英语的代码(1033).

tsenu.xml将是美国英语的文件名.

如果更改代码或文件并重新加载但仍然无效,请确保以Unicode格式保存文件,而不是UTF-8或ANSI.

此外,文件路径可能不正确.

我遇到了与上述问题类似的问题,并被BOL链接误入歧途.我的问题,也可能是你的问题,应该保存文件的路径:

<SQL_Server_data_files_path>\MSSQL11.MSSQLSERVER\MSSQL\FTDATA\
Run Code Online (Sandbox Code Playgroud)

这是您希望同义词库与数据目录关联的数据库的路径.虽然我正在运行SQL2012,但我在2008R2中创建了这个数据库,结果就是它的数据目录了MSSQL10_50MSSQLSERVER\MSSQL\FTDATA

http://sqlblog.com/blogs/greg_low/archive/2008/08/13/modifying-the-thesaurus-in-full-text-search-in-sql-server-2008.aspx