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」で始まる単語に対して定義されたシソーラスが返されます。

このクエリを使用して返される reuslt セットは次のとおりです

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 に答える