sql server全文搜索 - 在全文搜索中查找同义词库的示例用法

时间:2013-05-30 15:11:57

标签: sql-server search full-text-search freetext

我正在冒险尝试一些选择 (即

SELECT *
FROM Production.Product
WHERE FREETEXT(*, 'screw washer spaner');

) 我还没有遇到使用同义词库的选择并显示同义词的发现 我怎么知道我是否使用此功能?
任何人都可以提供演示叙词表用法的选择

1 个答案:

答案 0 :(得分:3)

这是安装脚本(感谢Itzik Ben-Gan(作者查询SQL Server)),它允许您在同义词库的底部使用示例查询:

IF OBJECT_ID('dbo.Documents', 'table') IS NOT NULL
    DROP TABLE dbo.Documents;

CREATE TABLE dbo.Documents
(
    id  INT NOT NULL IDENTITY,
    title NVARCHAR(100) NOT NULL,
    doctype NCHAR(4) NOT NULL,
    docexcerpt NVARCHAR(1000) NOT NULL,
    doccontent VARBINARY(MAX) NOT NULL,
    CONSTRAINT PK_Documents
        PRIMARY KEY CLUSTERED(id)
);
GO
INSERT INTO dbo.Documents
(title, doctype, docexcerpt, doccontent)
SELECT N'Introduction to Data Mining', 
 N'docx',
 N'Using Data Mining is becoming more a necessity for every company 
   and not an advantage of some rare companies anymore. ',
 bulkcolumn;
GO 

- 通过添加

编辑同义词库文件
<expansion>    
   <sub>need</sub>    
   <sub>necessity</sub> 
</expansion>

- 运行以下命令重新加载已编辑的同义词库

EXEC sys.sp_fulltext_load_thesaurus_file 1033; 
GO

在单独的批处理中,执行以下命令:

SELECT * 
FROM dbo.Documents
WHERE FREETEXT(doccontent,  N'FORMSOF(THESAURUS, need)');
GO

“需要”这个词不在docexcerpt中,但是当同义词被加载到同义词库中时,如果正确加载同义词库,该行将返回。如果您遇到问题,那么有很多关于如何加载/配置它的StackOverflow文章和BOL条目。