0

OKこれが状況です。

テーブルで全文検索を有効にしていますが、一部のフィールドでのみ機能します。

CREATE FULLTEXT CATALOG [defaultcatalog]
CREATE UNIQUE INDEX ui_staticid on static(id)
CREATE FULLTEXT INDEX ON static(title_gr LANGUAGE 19,title_en,description_gr LANGUAGE 19,description_en) KEY INDEX staticid ON [defaultcatalog] WITH CHANGE_TRACKING AUTO

なぜ以下が結果をもたらすのか

Select * from static where freetext(description_en, N'str')

そしてこれはそうではありません(両方ともstrを含むテキストを持っていますが..)

Select * from static where freetext(description_gr, N'str')

(私は言語仕様なしでもそれを試しました-この場合はギリシャ語)(データベースの照合はGreek_CI_ASです)ところで

Select * from static where description_gr like N'%str%'

うまく動作します..

すべてのフィールドはnvarcharタイプであり、_grフィールドは英語とギリシャ語のテキストを保持します。(重要ではありません)

すべての助けは大歓迎です

4

1 に答える 1

0

何が起こっているのかを理解しようとしているだけです。このクエリで何が得られますか?

SELECT * FROM static WHERE FREETEXT(*, N'str')

検索する列を明示的に指定していない場合、期待される結果が得られますか?

別のポイント: ステートメントの言語 ID が間違っていると思います。SQL Server Books Online によると:

文字列として指定した場合、language_term は syslanguages システム テーブルのエイリアス列の値に対応します。文字列は、'language_term' のように単一引用符で囲む必要があります。整数として指定した場合、language_term は言語を識別する実際の LCID です。

インターネットで調べたところ、ギリシャ語の LCID は 19 ではなく 1032 です。19 の代わりに 1032 を試していただけますか? それは違いがありますか?

マルク

于 2009-07-13T15:18:55.567 に答える