Дельта-импорт DIH для индекса нескольких полей из mysql

Что такое pk в дельта-импорте solr DIH? Я пытаюсь дельта-индексировать несколько полей в solr?


person user1964901    schedule 18.01.2013    source источник


Ответы (3)


Я считаю, что это любое поле, которое вы указываете в файле schema.xml в качестве поля идентификатора.

person Shane Andrade    schedule 18.01.2013
comment
Пожалуйста, посмотрите на код выше и посмотрите, есть ли что-то неправильное? - person user1964901; 18.01.2013
comment
Привет, я проиндексировал данные, и это было успешно (46 документов). Теперь, когда я делаю запрос, чтобы показать мне все документы (/select?q=*:*), он показывает мне только numFound=9. В моих данных mysql все поля будут иметь нулевое значение, он не показывает мне эти документы, как я могу это исправить, чтобы он показывал мне все документы? любой намек, что я должен делать? - person user1964901; 21.01.2013

Это имя поля Solr, которое служит уникальным ключом для этой записи. Вы определяете свое сопоставление источника с этим столбцом Solr, а затем — после сопоставления — Solr проверяет его наличие и значения на основе указанного вами поля pk.

Он отличается от первичного ключа, потому что вы можете генерировать первичный ключ или он может быть каким-то образом неподходящим. Но может быть так же. Я думаю, что самое ясное объяснение Wiki может быть в примере для HttpDataSource.

Я полагаю, вы также можете определить составной pk, когда вы объединяете внутренние исходные записи в одну запись Solr.

person Alexandre Rafalovitch    schedule 18.01.2013
comment
Я пытаюсь индексировать поля из двух таблиц. оба их первичных ключа: id. Я включил файл конфигурации данных выше, можете ли вы сказать мне, что я делаю неправильно. плз. и нужно ли включать поле pk в схему? - person user1964901; 18.01.2013
comment
Я думаю, вам нужно переназначить идентификатор таблицы gadget_lang на что-то вроде gadget_lang_id в Solr. Тогда pk для дочерней таблицы будет gadget_lang_id. - person Alexandre Rafalovitch; 18.01.2013
comment
переназначить в Solr, что ты имеешь в виду? нужно ли добавлять имя поля gadget_lang_id в файл схемы? - person user1964901; 19.01.2013
comment
Я думаю так. А затем во внутреннем объекте DIH есть строка: ‹field column=gadget_lang_id name=id /› - person Alexandre Rafalovitch; 19.01.2013
comment
Привет, я проиндексировал данные, и это было успешно (46 документов). Теперь, когда я делаю запрос, чтобы показать мне все документы (/select?q=*:*), он показывает мне только numFound=9. В моих данных mysql все поля будут иметь нулевое значение, он не показывает мне эти документы, как я могу это исправить, чтобы он показывал мне все документы? любой намек, что я должен делать? - person user1964901; 21.01.2013

Я думаю, проблема в вашем дельта-запросе для дочернего объекта. Вы дали,

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" дочернего объекта в файле схемы, потому что они хранятся и используются временно во время дельта-импорта и не требуют постоянного хранения в Индекс.

person Mavellin    schedule 21.01.2013
comment
Привет, я проиндексировал данные, и это было успешно (46 документов). Теперь, когда я делаю запрос, чтобы показать мне все документы (/select?q=*:*), он показывает мне только numFound=9. В моих данных mysql все поля будут иметь нулевое значение, он не показывает мне эти документы, как я могу это исправить, чтобы он показывал мне все документы? любой намек, что я должен делать? - person user1964901; 21.01.2013