2017-09-29 8 views
0

関連する2つのテーブル:categoriesproductsがあります。 productsテーブルにはフィールドcategoryIdがあり、そのカテゴリのidが含まれています。どのようにnameまたはそれのカテゴリの何かを得るproductsテーブルをインデックスするには?Azure Searchで関連するSQLテーブルをインデックスする方法は?

私は各テーブルに2つのインデックスと1つのインデックスを持っています。

// categories indexer 
    { 
     "name": "categories", 
     "dataSourceName": "categories", 
     "targetIndexName": "products", 
      "fieldMappings": [ 
      { 
       "sourceFieldName": "id", 
       "targetFieldName": "id" 
      }, 
      { 
       "sourceFieldName": "name", 
       "targetFieldName": "name" 
      } 
    } 

// products indexer 
    { 
     "name": "products", 
     "dataSourceName": "products", 
     "targetIndexName": "products", 
      "fieldMappings": [ 
      { 
       "sourceFieldName": "id", 
       "targetFieldName": "id" 
      }, 
      { 
       "sourceFieldName": "name", 
       "targetFieldName": "name" 
      }, 
       { 
       "sourceFieldName": "categoryId", 
       "targetFieldName": "categoryId" 
      } 
    } 

// index 
{ 
    "name": "products", 
    "fields": [ 
     { 
     "name": "id", 
     "type": "Edm.String", 
     ... 
     }, 
     { 
     "name": "categoryId", 
     "type": "Edm.String", 
     ... 
     }, 
     { 
     "name": "category_name", 
     "type": "Edm.String", 
     ... 
     }, 
     { 
     "name": "name", 
     "type": "Edm.String", 
     ... 
     } 
... 

答えて

1

潜在的に製品ドキュメントのコレクションフィールドにすべてcaregoryIdsを非正規化、categoriesproductsテーブルを結合するビューを作成します。 (他のカテゴリのデータにも同じアプローチを使用できます)。そのビューのインデクサーを設定します。

もう1つの方法は、製品とカテゴリの2つの個別の検索インデックスを作成し、検索クライアントコードで結合を実行することです。

関連する問題