Gri*_*rim 6 sql sql-server full-text-search formsof thesaurus
这是一个在FTSdata字段上进行全文搜索的示例表:
CREATE TABLE dbo.tTest (Id INT, FTSdata VARCHAR(100));
INSERT INTO dbo.tTest (Id, FTSdata) VALUES
(1, 'foo WordA'),
(2, 'foo WordAaabbb'),
(3, 'WordB bar'),
(4, 'WordBbbaaa bar');
Run Code Online (Sandbox Code Playgroud)
无论用户是输入"WordA"还是"WordB",我都希望找到所有这些记录.
我的词库看起来像这样:
<expansion>
<sub>WordA</sub>
<sub>WordB</sub>
</expansion>
Run Code Online (Sandbox Code Playgroud)
我需要类似的东西
SELECT *
FROM dbo.tTest
WHERE CONTAINS(FTSdata, 'FORMSOF (THESAURUS, "WordA*")');
Run Code Online (Sandbox Code Playgroud)
但不幸的是,FORMSOF谓词不支持星号.
确实,您不能*与 THESAURUS 一起使用,但您可以执行类似的操作。
询问
SELECT FTSdata
FROM dbo.tTest2
WHERE CONTAINS(FTSdata, 'FORMSOF (THESAURUS, Word) OR "Word*"')
Run Code Online (Sandbox Code Playgroud)
这将返回您为单词“Word”定义的任何同义词库以及以“Word”开头的任何单词
我使用此查询返回的结果集如下:
结果集
FTSdata
foo WordA
foo WordAaabbb
WordB bar
WordBbbaaa bar
Run Code Online (Sandbox Code Playgroud)
FTS XML 文件
<expansion>
<sub>Word</sub>
<sub>WordA</sub>
<sub>WordB</sub>
</expansion>
Run Code Online (Sandbox Code Playgroud)