Dies ist ein All-SQL-Dokumentenmanager für Letarette. Um einen SQL-basierten primären Dokumentspeicher mit Letarette zu verbinden, müssen nur zwei Abfragen geliefert werden. Überprüfen Sie das Beispiel, um zu sehen, wie grundlegend sie sein können, da der primäre Speicher eine ähnliche Struktur hat.
Die folgenden SQL -Treiber werden unterstützt:
Wenn Sie es nur ausprobieren möchten, gibt es eine docker-compose -Konfiguration, die ein vollständiges Little-Letarette-System startet, das von der Datenbank und Abfragen aus dem Beispielprojekt gespeist wird.
Führen Sie einfach docker-compose up um das System zu starten.
Wenn das System abgelaufen ist, können Sie Abfragen (und andere Befehle) ausführen, indem Sie das lrcli in dem Container "Letarette" ausführen:
$ docker-compose exec letarette ./lrcli search -i docs
search > carrots -celery
Query executed in 0.000564746 seconds with status " found in index "
Returning 2 of 2 total hits, capped: false
[135] …and a carrot ; boil until soft. When done, take out the…
[303] …pot, 1 carrot, 1 onion, thyme, bay leaf, salt and pepper, 2 cloves… Der LETARETTE.SQL -Dienst lrsql muss wissen, wie man eine Verbindung zur SQL -Datenbank herstellt und wo die Abfragen ermittelt werden, die Dokumente für den Letarette -Indexer zur Verfügung stellen.
Um den Service eine Verbindung zu einer PostgreSQL -Quelle herzustellen und Standardwerte für die Abfragedateiorte ( indexrequest.sql und documentrequest.sql ) zu verwenden:
$ export LRSQL_DB_DRIVER= " postgres "
$ export LRSQL_DB_CONNECTION= " postgres://user:password@localhost/testdb?sslmode=verify-full "
$ ./lrsql Durch Ausführen lrsql mit jedem Befehlszeilenargument werden verfügbare Einstellungen und deren Standardwerte ausgedruckt.
Der Setarette Indexer -Update -Zyklus verfügt über zwei separate Schritte. Zuerst holt er eine "Zinsliste" von Dokumenten, die neuer sind als die aktuelle Indexposition (Indexanforderung), und holt dann die Dokumente in dieser Liste ab (Dokumentanforderung).
Zeitstempel sind UTC - Referenzierte Unix -Epochen -Nanosekunden.
Die aktuelle Indexposition ist eine Kombination aus einer Dokument -ID und dem aktualisierten Zeitstempel dieses Dokuments. Um die Situation zu bewältigen, in der das Indexpositionsdokument seit dem letzten Abrufen aktualisiert wurde, müssen die Indexanforderung Abfragen einer strikten Dokumentbestellung befolgen. Dies erfolgt am besten durch Sortieren hauptsächlich nach dem Update -Zeitstempel und sekundär auf der Dokumenten -ID und dem Umgang mit dem Fall, in dem der Update -Zeitstempel separat unverändert ist. Siehe IndexRequest.sql aus dem Beispielprojekt.
Die Indexanforderungsabfrage erhält drei gebundene Parameter: afterDocument (String), fromTimeNanos (int64) und documentLimit (uint16) und sollte Zeilen von zwei Spalten zurückgeben: id (String) und updatedNanos (int64). Die Grenzensparameter werden durch Präfixen mit einem Dickdarm bezeichnet:
where :afterDocument > 2 Die Implementierung der Dokumentanforderung ist noch einfacher, da dies nur alle Dokumente für eine Liste von Dokument -IDs abrufen muss: documentRequest.sql. Der einzeln gebundene Parameter wantedIDs wird durch eine Liste von Dokument -IDs (String) ersetzt.
Die Abfrage an der Dokumentanforderung sollte Zeilen von id (String), updatedNanos (INT64), title (String), txt (String) und alive (BOOL) zurückgeben.
Setarette.SQL verwendet Build -Tags, um zu steuern, welche Treiber in den Service Binary integriert sind. Die Build -Tags haben die gleichen Namen wie die Treiber, die sie ermöglichen.
Die aktuelle Liste der Treiber -Build -Tags lautet:
Zum Beispiel um eine Binärdatei mit "Postgres" und "MySQL" -Unterstützung zu erstellen:
$ go build -tags " postgres,mysql "Der Setarette.sql -Dienst wird durch Umgebungsvariablen konfiguriert.
| Variable | Typ | Beschreibung |
|---|---|---|
| LRSQL_NATS_URL | Saite | URL für den NATS -Dienst, mit dem sich eine Verbindung herstellen kann, standardmäßig mit nats://localhost:4222 . |
| LRSQL_NATS_TOPIC | Saite | NATS THOMPE PREFIX für alle Nachrichten, Standardeinstellungen zu leta . |
| LRSQL_INDEX_SPACE | Saite | Der zum Diensten des Indexraums standardmäßige docs . |
| LRSQL_DB_DRIVER | Saite | Datenbank -Treibername |
| LRSQL_DB_CONNECTION | Saite | Datenbankverbindungszeichenfolge |
| LRSQL_SQL_INDEXSQLFILE | Saite | SQL -Quelldatei für die Bearbeitung von Indexanforderungen. Standard: indexrequest.sql . |
| LRSQL_SQL_DOCUMENSQLFILE | Saite | SQL -Quelle beantragte Anfragen von Dokumenten. Standard: documentrequest.sql . |