4

さまざまな言語で保存されているテキストデータを検索するために、MS SQL Server2008R2と全文検索を使用しています。

CONTAINS述語がアクセントでどのように機能するかについて少し混乱しています。

次の述語を使用する場合

CONTAINS([Text], @keywords  , Language @language)

検索結果のあるカタログでACCENT_SENSITIVITY = OFFは、ドイツが言語として指定されている場合、たとえば「Lächeln」と「lacheln」は同じです。

しかし、述語を次のように変更すると

CONTAINS([Text], FORMSOF(INFLECTIONAL, @keywords)  , Language @language) 

その場合、結果は異なり、アクセントの鈍感性は機能しないように思われますFORMSOF

私はMSDNとGoogleで答えを見つけようとしましたが、役に立つものは何も見つかりませんでした。

結果が異なる理由を誰かが知っていますか?

ありがとう!

4

2 に答える 2

0

私の理解では、これらは全文検索で一致を見つけるという 2 つの異なる目的を果たします。アクセントを区別しないカタログでは、'n' がアクセントを区別しない 'ñ' に相当するものと見なされるため、eñya = enya となるように用語の一致に対して実行される単純な文字の等価性があります。

FORMSOF を使用すると、検索で用語のステミング操作を実行して、動詞と名詞の形が検索で追加の用語として検索されるように要求します。たとえば、'foot' を検索すると 'feet' が含まれ、'run' を検索すると 'ran' が含まれます。

FORMSOF が基本的に値に対して機能していないように思われる場合は、フルテキスト言語用に適切な言語サポートがインストールされていることを確認してください。 SELECT * FROM sys.fulltext_languages

MSDN を確認する機会がなかった場合は、SQL ワード ブレーカーのドキュメントで、観察された動作を明らかにすることができます。http://msdn.microsoft.com/en-us/library/ms142509.aspx

于 2011-10-28T18:23:55.977 に答える
0

FORMSOF はあなたの言葉から分音符号を削除します:

SELECT * FROM sys.dm_fts_parser(N'FORMSOF(INFLECTIONAL, "Lächeln")', 1031, 0, 1)

列「display_term」を確認してください。

于 2012-10-16T08:59:18.170 に答える