2013-03-21 17 views
5
Solr DIH veri config.xml olarak

gibi JOIN ile daha iyi ana varlık içinde sorgusu ile mümkün olduğu kadar çok alanı getirmesi geçerli:Solr DataImportHandler - vs ayrı bir varlık KATILIN

<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"> 

veya kullanım gibi ayrı bir alt varlık: size yardımcı olabilecek

<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> 

cevap

7

Birkaç İşaretçiler karar vermek: -

  • alt kişiler yeniden her biri için bir sorgu yangın Büyük bir koleksiyonunuz varsa, kordonlar ve dolayısıyla performansta daha yavaş olacaktır. Bir eşleme için bir tane varsa
  • Eğer bir sorguda kendisi ile tüm alanları almak böylece katılmak kullanabilirsiniz.
  • Kök için birden fazla kayda sahipseniz, büyük olasılıkla çok değerli bir alan yaratacak alt öğeyi kullanırsınız.
+2

Evet (davranışını istemedikçe aynı belge için birden çok satır dönmek gibi tek katılmak sorgusu kullanabilirsiniz olamaz). Test ederek doğruladım. Masa başına bir varlık tuttum. Alt sorgularda ana sorgu artı 11 sorgu vardı. Her varlık, DB'ye ayrı bir istemci bağlantısı açtı. I (bire bir) BİRLEŞTİRMELER ana sorguya alt işletme sorguları 7 hareket sonra, indeksleme hızında bir 3-misli artış verdi. – arun

+0

varlıklar özelliği alt yavaşlık nedeniyle neredeyse işe yaramaz. –