Что такое pk в дельта-импорте solr DIH? Я пытаюсь дельта-индексировать несколько полей в solr?
Дельта-импорт DIH для индекса нескольких полей из mysql
Ответы (3)
Я считаю, что это любое поле, которое вы указываете в файле schema.xml в качестве поля идентификатора.
Это имя поля Solr, которое служит уникальным ключом для этой записи. Вы определяете свое сопоставление источника с этим столбцом Solr, а затем — после сопоставления — Solr проверяет его наличие и значения на основе указанного вами поля pk.
Он отличается от первичного ключа, потому что вы можете генерировать первичный ключ или он может быть каким-то образом неподходящим. Но может быть так же. Я думаю, что самое ясное объяснение Wiki может быть в примере для HttpDataSource.
Я полагаю, вы также можете определить составной pk, когда вы объединяете внутренние исходные записи в одну запись Solr.
Я думаю, проблема в вашем дельта-запросе для дочернего объекта. Вы дали,
deltaQuery="select id from cc_gadget_lang where '${cc_gadget.last_modified_date}' > '${dataimporter.last_index_time}'"
Я думаю, что условие where в приведенном выше запросе всегда проверяется на TRUE, и для этого нет конкретной цели.
Решение, которое я бы предложил, состоит в том, чтобы иметь отдельное поле "last_modified_date" в таблице "cc_gadget_lang" в вашей базе данных и использовать его в дельта-запросе вашего дочернего объекта.
Я также считаю, что нет необходимости иметь "pk" дочернего объекта в файле схемы, потому что они хранятся и используются временно во время дельта-импорта и не требуют постоянного хранения в Индекс.