1

MSDN によると、英語のファイル ( tseng.xml) をシソーラスにロードするシソーラス ファイルを編集した後にこれを行いました。

EXEC sys.sp_fulltext_load_thesaurus_file 1033;
GO

シソーラス ファイルのミニ サンプル部分

<XML ID="Microsoft Search Thesaurus">
    <thesaurus xmlns="x-schema:tsSchema.xml">
    <diacritics_sensitive>0</diacritics_sensitive>
        <expansion>
            <sub>car</sub>
            <sub>coche</sub>
            <sub>automobile</sub>
            <sub>ride</sub>
        </expansion>
    </thesaurus>
</XML>

インデックス付きの列 c.keywords フィールドは、'bike,car' で構成されています。クエリによるクイック チェック:

DECLARE @strsearch varchar(200)
SET @strsearch = 'automobile'
SELECT adid from ads INNER JOIN campaign c ON ads.campid=c.campaignid 
WHERE 
FREETEXT(c.keywords, @strsearch)

RESULTS
========
ad NULL

「車」を検索するフリーテキストは機能します

DECLARE @strsearch varchar(200)
SET @strsearch = 'car'
SELECT adid from ads INNER JOIN campaign c ON ads.campid=c.campaignid 
WHERE 
FREETEXT(c.keywords, @strsearch)

RESULTS
========
ad 41

そのため、シソーラスを使用する FREETEXT は結果を返しません。デフォルトでは、FREETEXT はシソーラス ファイルを使用していると思いました。私は何を間違っていますか?

4

1 に答える 1

3

MSDN から直接 ( http://msdn.microsoft.com/en-us/library/cc280598.aspx ):

A. シソーラス ファイルが既に読み込まれている場合でも読み込む

次の例では、英語のシソーラス ファイルを解析して読み込みます。

EXEC sys.sp_fulltext_load_thesaurus_file 1033;
GO

B. シソーラス ファイルがまだロードされていない場合にのみロードする

次の例では、アラビア語シソーラス ファイルが読み込まれていない限り、解析して読み込みます。

EXEC sys.sp_fulltext_load_thesaurus_file 1025, @loadOnlyIfNotLoaded = 1;
GO

私は tseng.xml ファイルを使用していました。英語のシソーラス ファイルには、tseng.xml と tsenu.xml の 2 つがあります。

tseng.xml は英語 (英国) 用で、tsenu.xml は英語 (米国) 用です。LCID (1033) は tsenu.xml ファイルに対応します

保存時の XML ファイルは Unicode 形式である必要があり、ANSI または UTF-8 ではなく、バイト オーダー マークを指定する必要があります。Microsoft のメモ帳を使用して、tsenu.xml ファイルを Unicode として保存しました。

于 2012-06-01T07:20:57.343 に答える