Обработчику импорта данных (DIH) не удается проиндексировать все записи из MySQL Просмотр - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть Просмотр в моей MySQL БД и создание PO C Индексации Solr с использованием DIH. В моем запросе прямого выбора есть 6 записей, но запрос Solr возвращает только 4 (даже если он говорит, что у него есть 6 выборок).

MySql Просмотр

CREATE VIEW FORUMS_SURVEYS AS
SELECT F.TITLE, F.DESCRIPTION, F.CREATED, FC.TYPE, FC.SUBTYPE FROM FORUM F JOIN FORUM_CATEGORY FC ON F.FORUM_CATEGORY_ID=FC.ID
UNION ALL
SELECT S.TITLE, S.DESCRIPTION, S.DATED AS CREATED, "" AS TYPE, "" AS SUBTYPE FROM SURVEY S; 

Выберите из представления

select * from FORUMS_SURVEYS;

Result - Fetched Rows: 6 (as expected)

Запустите DIH на Solr со следующим

db-data-config.xml

<dataConfig>
    <dataSource driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/bjm" user="<user>" password="<password>" />
    <document>
       <entity name="forums_surveys" query="SELECT * FROM forums_surveys" transformer="HTMLStripTransformer">
            <field column="TITLE" name="title" indexed="true" type="text" />
            <field column="DESCRIPTION" name="description" indexed="true" type="text" stripHTML="true"/>
            <field column="CREATED" name="created" indexed="true" type="text" />
            <field column="TYPE" name="type" indexed="true" type="text" />
            <field column="SUBTYPE" name="subtype" indexed="true" type="text" />
        </entity>
    </document>
</dataConfig>

В интерфейсе администратора, результат DataImport

Last Update: 16:13:12

(Duration: 01s)
Requests: 1 1/s, Fetched: 6 6/s, Skipped: 0 , Processed: 0 
Started: 42 minutes ago

Опять же, хорошо для см. текст «Извлечено: 6»

Тем не менее, вещи go неприятны, когда я запрашиваю результат у администратора пользовательского интерфейса с запросом Параметры q = title: * (обратите внимание на поле в JSON ниже ответа> numFound)

"responseHeader":{
    "status":0,
    "QTime":8,
    "params":{
      "q":"title:*",
      "_":"1587565922553"}},
  "response":{"numFound":4,"start":0,"docs":[
//removed the 4 records for brevity
]

1 Ответ

0 голосов
/ 28 апреля 2020

Вам необходимо иметь уникальное поле, которое может быть идентификатором. Уникальное поле требуется для поддержания уникальности документов solr.

Элемент uniqueKey указывает, какое поле является уникальным идентификатором для документов. Хотя uniqueKey не требуется, это почти всегда оправдано дизайном вашего приложения.

Например, uniqueKey следует использовать, если вы когда-либо обновите документ в индексе.

Вы можете определить поле уникального ключа, назвав его:

<uniqueKey>id</uniqueKey>
...