7

这是一个在字段上进行全文搜索的示例表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 谓词不支持星号。

4

1 回答 1

4

确实你不能*与 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>
于 2013-11-05T20:54:03.660 回答