2013-03-21 2 views
5

В Solr DIH данных-config.xml, это лучше, чтобы принести как можно больше полей, как это возможно с запросом в основном лица с JOIN, как:Solr DataImportHandler - РЕГИСТРИРУЙТЕСЬ против отдельного лица

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

ответ

7

несколько советов, которые могут помочь вам решить: -

  • суб сущности огня запрос для каждого из ре шнуры и, следовательно, будут медленнее в производительности, если у вас есть огромная коллекция.
  • Если у вас есть сопоставление «один к одному», вы можете использовать соединение, чтобы получить все поля с одним запросом.
  • Если у вас есть несколько записей для корня, вы должны использовать сущность, которая, вероятно, создала многозначное поле. (Вы не можете использовать один запрос соединения, поскольку он будет возвращать несколько строк для того же документа, если вы не хотите поведения)
+2

Да. Я подтвердил это путем тестирования. Я оставил один объект в таблице. Имел основной запрос плюс 11 запросов в субистемях. Каждый объект открыл отдельное клиентское соединение с БД. После того, как я переместил 7 запросов субсущности к основному запросу с JOIN (один к одному), он дал 3-кратное улучшение скорости индексирования. – arun

+0

Функция сущностей практически бесполезна из-за медлительности. –

Смежные вопросы