2013-06-19 22 views
5

異なる言語をサポートするサイトがあります。私たちは何百万ものデータを持っていますので、私たちは実装したいと考えていますSQL Serverフルテキスト検索SQL Serverの多言語コンテンツでフルテキスト検索を実装する方法

私たちは現在以下のようなテーブル構造を持っています。

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

CREATE TABLE ProductLanguage 
(
    ID INT, 
    LanguageID INT, 
    Name NVARCHAR(200), 
    ........ 
    ........ 
) 
[名前]列にフルテキスト検索を実装して、[名前]列にフルテキストインデックスを作成します。しかし、フルテキストインデックスを作成する際には、1つの列につき1つの言語しか選択できません。

多言語コンテンツのためにSQL Serverでフルテキスト検索を実装する最良の方法は何ですか?

別のテーブルを作成する必要がありますか。はいの場合、テーブル構造は何ですか(言語は固定されておらず、後で別の言語を追加できます)、検索クエリは何でしょうか?

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

+0

これは、このような変化の時ではないかもしれない場合でも、将来のためにあなたはLuceneを、Elasticsearch、Xapianのような本物の検索エンジンを使用して検討すべきです。私の経験では、データベースを対象とした全文検索は、データベースが作成されていない顧客の要求をますます高めています。 – 0xCAFEBABE

+0

参照http://stackoverflow.com/questions/3492405/how-do-i-do-a-full-text-search-in-sql-server-2008-where-the-data-contains-multip –

答えて

2

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

名前列のタイプを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文書としてそれらを格納することができ代わりに文字列

name 1 
name 2 
name 3 

として値を格納する

...各値(XML文書)の言語設定に基づいて、名前1、フランス語または名前2、英語名3の英国語を使用して、正確な語句/語幹が使用されます。

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

ML

+0

Matija Lah - 既存の言語設定を上書きしますか(列にフルテキストインデックスを作成するときに選択します)。 –

0

私の代わりにNVARCHAR(N)のXMLを使用した場合のパフォーマンスを心配するだろう - 私はそれのためのハード証拠を持っていないのに。 代替方法として、動的SQL(言語固有のコードをオンザフライで生成)を使用し、Productテーブルの言語固有のインデックス付きビューを組み合わせることができます。 thsiの欠点は、実行計画キャッシュの欠如、すなわち再び:性能である。

0

これはMatija Lahの回答と同じ考えですが、これはMSのホワイトペーパーで説明されている推奨解決策です。

  • インデックス付きのコンテンツは(例えばMicrosoft Wordの 文書など)のバイナリ型である、で特定の言語 タグを称えるかもしれないワードブレーカに送信する前に、テキストコンテンツ を処理するためのiFilterの責任バイナリーファイル。この場合、インデックス時に、 iFilterは、特定のドキュメントの正しいワードブレーカまたは特定の言語で指定されたドキュメントの セクションを呼び出します。この場合には が必要です。索引付け後に多言語 のコンテンツが正しく索引付けされたことを確認するだけです。 - 言語設定
  • HTML - <meta name=“MS.locale”…>
  • XML - xml:lang属性
  • あなたのコンテンツがある場合は
    1. Wordを:WordやHTMLのためのフィルタ、およびXML 文書は、言語仕様は、文書の内容に属性を称えますプレーンテキストの場合は、 をXMLデータ型に変換し、特定の言語タグを に追加して、その特定のドキュメントに対応する言語を指定するか、または 文書セクション。これが機能するには、インデックスを作成する前に、 は使用する言語を知っている必要があります。

https://technet.microsoft.com/en-us/library/cc721269%28v=sql.100%29.aspx

関連する問題