2016-07-09 13 views
0

Gibt es eine Möglichkeit, die Indizierung eines großen SQL-Datenmenge aus, um fortzufahren, wo wir in Apache Solr links Datenimport-HandlerApache Solr Indizierung SQL-Daten

Beispiel für die Verwendung: wie ich die Indizierung in Zeile 1000 gestoppt, nachdem das Extrahieren a Daten und Verarbeitung abgeschlossen Ich habe meine Solr gestoppt und die Indizes wurden aktualisiert, jetzt möchte ich von dort weitermachen.

Wie geht das?

Das ist mein 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> 

Antwort

0

eine LIMIT-Anweisung in der SQL in Ihrer DIH Konfiguration verwenden. Es gibt keine automatische Möglichkeit, dies in Solr zu tun, da Solr nicht wissen kann, wie viele Zeilen indiziert wurden und ob die SQL-Datenbank zwischen dem Neustart des Indizierungsprozesses gewechselt hat.

Sie können Parameter auch über den URL beim Aufruf des vollständigen Imports an den Importvorgang senden und die Syntax ${} in der Konfigurationsdatei verwenden, um auf diesen Wert (start_at=1000 oder etwas Ähnliches) zu verweisen. Aber für ein oder zwei aus, verwenden Sie einfach den fest codierten Wert in der DIH-Konfigurationsdatei.

+0

Eigentlich dachte ich daran, das zu tun, aber das Problem ist, wenn ich mit dem vollständigen Import neu indizieren werde, wird es die vorherige indizierte Datei löschen. –

+0

Sie können den DeltaImport verwenden, um eine alternative Abfrage bereitzustellen - aber noch besser, fügen Sie der URL "clean = false" hinzu: 'clean: (Standardwert 'true'). Gibt an, ob der Index aufgeräumt werden soll, bevor die Indizierung gestartet wird – MatsLindh