2016-07-09 3 views
0

Есть ли способ, чтобы продолжить индексирование большого SQL набора данных, из которого мы оставили в Apache Solr с помощью обработчикаApache Solr данные индексирования SQL

Пример импорта данных: как я перестал индексирование в строке 1000 после извлечения данные и обработка завершены. Я остановил свой Solr, и индексы были обновлены, теперь я хочу продолжить оттуда.

Как это сделать?

Это мой data-config.xml:

<entity name="id" query="select movie_id as 'id',title, genres from movies;"> 
    <field column="title" name="movie_name"/> 
    <field column="genres" name="genres"/> 
    <entity name="links_id" query="select imdb_id,tmdb_id from links where movie_id=${id.id};"> 
     <field name="imdb_id" column="imdb_id" /> 
     <field name="tmdb_id" column="tmdb_id" /> 
    </entity> 
    <entity name="movie_rating" query="select avg(rating),count(*) from ratings where movie_id=${id.id};"> 
     <field column="avg(rating)" name="avg_rating"/> 
     <field column="count(*)" name="total_users_rated"/> 
    </entity> 
</entity> 

ответ

0

Используйте LIMIT заявление в SQL в конфигурации DIH. В Solr нет автоматического способа сделать это, поскольку Solr не может знать, сколько строк было проиндексировано, и изменилась ли база данных SQL между перезапуском процесса индексирования.

Вы также можете отправить параметры в процесс импорта через URL-адрес при вызове полного импорта и использовать синтаксис ${} в файле конфигурации для ссылки на это значение (start_at=1000 или что-то подобное). Но для одного или двух отключений просто используйте твердое значение в конфигурационном файле DIH.

+0

На самом деле я думал об этом, но проблема в том, что если я начну переиндексацию с полным импортом, он удалит предыдущий индексированный файл. –

+0

Вы можете использовать deltaImport для предоставления альтернативного запроса, но даже лучше, добавьте 'clean = false' в URL-адрес:' clean: (по умолчанию 'true'). Указывает, следует ли очищать индекс до начала индексации. ' – MatsLindh

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