5

Solr DIH data-config.xml では、次のように JOIN を使用してメイン エンティティのクエリを使用して、できるだけ多くのフィールドを取得することをお勧めします。

<entity name="Lists" 
        pk="l.list_id" 
        query="SELECT l.list_id AS id, l.user_id, lo.is_votable FROM lists l
                 INNER JOIN list_options lo ON lo.list_id = l.list_id">

または、次のような別のサブエンティティを使用します。

<entity name="Lists" 
        pk="l.list_id" 
        query="SELECT l.list_id AS id, l.user_id FROM lists l">

  <entity name="ListOptions" 
          query="SELECT lo.is_votable FROM list_options lo 
                   WHERE lo.list_id=${Lists.id}" />

</entity>
4

1 に答える 1

7

あなたが決定するのを助けるかもしれないいくつかのポインタ:-

  • サブエンティティは各レコードに対してクエリを実行するため、膨大なコレクションがある場合はパフォーマンスが低下します。
  • 1対1のマッピングがある場合は、結合を使用して、1つのクエリ自体ですべてのフィールドを取得できます。
  • ルートに複数のレコードがある場合は、サブエンティティを使用します。これにより、おそらく複数値のフィールドが作成されます。(動作が必要でない限り、同じドキュメントに対して複数の行が返されるため、単一の結合クエリを使用することはできません)
于 2013-03-22T04:29:31.113 に答える