我正在挑选冒险作品。
(即

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

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

最佳答案

这是设置脚本(感谢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

“需要”一词不在文档摘录中,但是由于同义词库中已加载同义词,因此,如果正确加载了同义词库,则该行将返回。如果您对此有疑问,则有许多StackOverflow文章和有关如何加载/配置它的BOL条目。

08-19 22:56