以下是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');
无论用户输入“WordA”还是“WordB”,我都希望找到所有这些记录。
我的词库看起来像这样:
<expansion>
<sub>WordA</sub>
<sub>WordB</sub>
</expansion>
我需要像
这样的东西SELECT *
FROM dbo.tTest
WHERE CONTAINS(FTSdata, 'FORMSOF (THESAURUS, "WordA*")');
但遗憾的是,FORMSOF谓词不支持星号。
答案 0 :(得分:2)
确实你不能将*
与THESAURUS一起使用,但你可以这样做。
的查询强>
SELECT FTSdata
FROM dbo.tTest2
WHERE CONTAINS(FTSdata, 'FORMSOF (THESAURUS, Word) OR "Word*"')
这将返回您为“Word”一词定义的任何词库以及以“Word”开头的任何词语
我使用此查询返回的重新集合如下:
结果集
FTSdata
foo WordA
foo WordAaabbb
WordB bar
WordBbbaaa bar
FTS XML文件
<expansion>
<sub>Word</sub>
<sub>WordA</sub>
<sub>WordB</sub>
</expansion>