2013-03-27 4 views
0

Это может быть тривиальный вопрос, но я пытаюсь добавить существующий индекс Solr и, кажется, переписывать то, что есть каждый раз. У меня есть две базы данных, из которых я получаю данные, и я могу импортировать данные из каждой базы данных по отдельности, но когда я импортирую данные из одного, а затем сразу импортирую данные из второго, первый перезаписывается. У меня есть два источника данных, сопоставленные в моем файле db-config.xml, и я использую стандартный пользовательский интерфейс администратора для запуска импорта. Мой конфигурационный файл выглядит так.Append to Solr Index

<dataConfig> 
    <dataSource 
    name="ds-1" 
    type="JdbcDataSource" 
    driver="Driver" 
    url="jdbc_url1" 
    user="user1" 
    password="pass1"/> 

<dataSource 
    name="ds-2" 
    type="JdbcDataSource" 
    driver="Driver" 
    url="jdbc_url2" 
    user="user2" 
    password="pass2"/> 

    <document> 

<entity name="entity1" dataSource="ds-1" query="SELECT YYY FROM TABLE"> 
     ... 
    </entity> 

<entity name="entity2" dataSource="ds-2" query="SELECT ZZZ FROM TABLE"> 
     ... 
    </entity> 

    </document> 
</dataConfig> 

Что можно сделать, чтобы предотвратить переписывание исходного индекса. Я хочу постепенно добавлять данные из разных источников все время, поэтому, когда мои индексы будут протерты, теперь я хорошо себя чувствую.

ответ

1

Ваша проблема заключается в том, что вы, вероятно, определяете ключ для индексированных документов как идентификатор первичного ключа из базы данных, а значения перекрываются. Чтобы этого не произошло, вам нужно будет указать уникальный идентификатор для Solr. Обычно, когда я сталкивался с этой проблемой в прошлом, я использовал поле строки в качестве поля id и добавлял символ или два в идентификатор из базы данных, чтобы сделать его уникальным. Пример: элементы из таблицы продуктов будут иметь такие идентификаторы, как P1, P2 и т. Д., А элементы из таблицы заказов будут иметь идентификаторы, такие как O1, O2 и т. Д.

Вы должны иметь возможность использовать Обработчик импорта данных TemplateTransformer, чтобы помочь выполнить этот для тебя.

+0

Привет, спасибо @Paige Cook ... У меня есть поле id, которое является уникальным идентификатором для каждой записи в каждой имеющейся у меня базе данных. Должен ли я указывать это поле в теге как тип «pk»? – aeupinhere

+2

Ughh ... Я назвал поле чем-то идентичным в обеих базах данных, так что имена фасетов были одинаковыми. Он работал правильно все время. Спасибо за быстрый ответ, хотя! – aeupinhere