n
製品の表と、これらの製品の機能の表があります。各製品には多くの機能があります。 SolrのDataImportHandlerの構成を考える:Solrはテーブルをメモリ内で結合できますか?
<document name="products">
<entity name="item" query="select id, name from item">
<field column="ID" name="id" />
<field column="NAME" name="name" />
<entity name="feature"
query="select feature_name, description from feature where item_id='${item.ID}'">
<field name="feature_name" column="description" />
<field name="description" column="description" />
</entity>
</entity>
</document>
Solrには、このデータをフェッチするためにn + 1
クエリを実行します。メインクエリの場合は1
、フィーチャを取得するクエリの場合はn
です。これは、多数のアイテムにとっては非効率的です。これらのクエリを別々に実行して代わりにメモリに結合するようにSolrを構成することは可能ですか?両方のテーブルのすべての行がフェッチされます。
私は既にこの手法を(タグのような)単一値サブエンティティに使用していますが、複数のフィールドを持つサブエンティティに対してこれをどのようにしますか? *これを反映するために質問を更新しました。* – beerbajay
GROUP_CONCAT()は、指定されたIDの説明のすべての値を取り、結果の単一の列に戻します。説明の個々の値はコンマで区切られます。その後、RegexTransformerを使用して、インデックスを作成する前にコンマで区切ることができます。 – nikhil500
あなたは私が何を意味するのか誤解しました。サブエンティティに**フィールドが2つある場合はどうなりますか?各製品には多くの機能があり、各機能は名前*と*説明の両方で構成されていますか? – beerbajay