0

次のプロトタイプのドキュメントがあります。

{
   title: "HD8200 DLP Projector",
   normal_price: 4999.99,
   specifications: [
       {
           ov: "HD (1920 x 1080)",
           fn: "Resolution (Native / Max)",
           o: 7,
           f: 211
       },
       {
           ov: "20000",
           fn: "Contrast Ratio",
           o: 15,
           f: 225
       }
   ]
}

仕様に基づいて、この製品データベースのフィルターのリストを作成しようとしています。

o各フィールド ( ) について、製品カウンターにマップされたオプション ID ( ) のリストを取得するにはどうすればよいfですか?

フィールド ID の特定のリスト (たとえば、211 と 225) に対してこれを達成する必要があると仮定しましょう。

4

1 に答える 1

0

map() 呼び出しごとに 1 つのドキュメントを取得し、各オプションのレコードを書き出すマッパーを作成します。レコード キーはフィールド ID で、値はフラグ「1」、製品タイトル、およびオプション ID を連結したものになります。

ID のリストを読み取り、同じ形式のレコードを書き出す別のマッパーを作成します。キーはフィールド ID で、値はフラグ「0」と 2 つの空の文字列の連結です。

2 つのマッパーによって書き込まれたレコードを読み取るための Reducer を記述します。reducer() を呼び出すたびに、特定のフィールドに書き込まれたすべてのレコードが渡されます。これらのレコードの 1 つに「0」フラグがある場合、そのフィールドは関心のあるフィールドの 1 つでした。その場合にのみ、「1」フラグを持つ各レコードのレコードを書き出します。キーは製品タイトルで、値はオプション ID です。

2 つのマッパーと 1 つのレデューサーを使用する最初のジョブ ドライバー クラスを定義します。このステップでは、指定したフィールド ID の製品オプションのペアが表示されます。製品ごとにオプションを収集する、またはその逆のオプションを収集するには、2 番目のジョブが必要になります。

于 2013-03-22T18:15:09.860 に答える