6

さまざまな言語をサポートするサイトがあります。何百万ものデータがあるため、検索ではSQL Server Full-Text Searchを実装したいと考えています。

現在のテーブル構造は以下のとおりです。

CREATE TABLE Product
(
   ID INT IDENTITY(1,1),
   Code VARCHAR(50),
   ........
   ........
)

CREATE TABLE ProductLanguage
(
   ID INT,
   LanguageID INT,
   Name NVARCHAR(200),
   ........
   ........
)

「名前」列に全文検索を実装したいので、名前列に全文索引を作成しました。ただし、フルテキスト インデックスの作成中は、列ごとに 1 つの言語しか選択できません。「英語」または「ニュートラル」を選択すると、日本語、中国語、フランス語などの他の言語で期待されるデータが返されません。

では、多言語コンテンツ用に SQL Server にフルテキスト検索を実装する最良の方法は何でしょうか。

別のテーブルを作成する必要がありますか。はいの場合、テーブル構造はどうなりますか (言語は固定されていないため、後で別の言語を追加できることに留意する必要があります)、検索クエリは何になりますか?

SQL Server 2008 R2 を使用しています。

4

3 に答える 3

2

Microsoft Office ドキュメント、PDF、[X]HTML、XML など、特定のコンテンツ (ドキュメント) タイプは言語設定をサポートしています。

Name 列のタイプを XML に変更すると、各値 (つまり、行ごと) の言語を決定できます。例えば:

値を文字列として保存する代わりに

name 1
name 2
name 3

...適切な言語宣言を使用して XML ドキュメントとして保存できます。

<content xml:lang="en-US">name 1</content>
<content xml:lang="fr-FR">name 2</content>
<content xml:lang="en-UK">name 3</content>

フルテキスト インデックスの作成中に、各値 (XML ドキュメント) の言語設定に基づいて、正しいワード ブレーカー/ステマーが使用されます。名前 1 には米国英語、名前 2 にはフランス語または名前 2、英国英語には名前 3 が使用されます。

もちろん、これには、データの管理と消費の方法を大幅に変更する必要があります。

ML

于 2013-06-26T14:32:14.787 に答える
0

NVARCHAR( n )の代わりに XML を使用した場合のパフォーマンスが心配ですが、確かな証拠はありません。代替手段の 1 つは、Product テーブルの言語固有のインデックス付きビューと組み合わせて、動的 SQL (言語固有のコードをオンザフライで生成する) を使用することです。これの欠点は、実行計画のキャッシュがないことです。つまり、パフォーマンスです。

于 2013-10-15T11:55:00.330 に答える