Il s'agit d'un gestionnaire de documents entièrement-SQL pour LetArette. Pour connecter un stockage de documents primaires basé sur SQL à LetArette, seules deux requêtes doivent être fournies. Vérifiez l'exemple pour voir à quel point ils peuvent être basiques, étant donné que le stockage principal a une structure similaire.
Les pilotes SQL suivants sont pris en charge:
Si vous voulez simplement l'essayer, il existe une configuration docker-compose qui lance un petit système LetArette complet, alimenté par la base de données et les requêtes du projet d'exemple.
Exécutez simplement docker-compose up pour démarrer le système.
Lorsque le système est en place, vous pouvez exécuter des requêtes (et d'autres commandes) en exécutant le lrcli à l'intérieur du conteneur "LetArette":
$ 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… Le service letArette.SQL , lrsql , doit savoir comment se connecter à la base de données SQL et où trouver les requêtes qui fournissent des documents à l'indexer de LetAtte .
Pour que le service se connecte à une source PostgreSQL et utilisez des valeurs par défaut pour les emplacements des fichiers de requête ( indexrequest.sql et documentrequest.sql ):
$ export LRSQL_DB_DRIVER= " postgres "
$ export LRSQL_DB_CONNECTION= " postgres://user:password@localhost/testdb?sslmode=verify-full "
$ ./lrsql L'exécution lrsql avec n'importe quel argument de ligne de commande imprimera les paramètres disponibles et leurs valeurs par défaut.
Le cycle de mise à jour de l'indexeur LetArette a deux étapes distinctes, d'abord, il récupère une "liste d'intérêt" des documents plus récents que la position d'index (demande d'index), puis il récupère les documents sur cette liste (demande de document).
Les horodatages sont des nanosecondes UNIX référencées.
La position d'index actuelle est une combinaison d'un ID de document et de l' horodatage mis à jour de ce document. Pour gérer la situation où le document de position d'index a été mis à jour depuis sa dernière récupération, les requêtes de la demande d'index doivent suivre une commande de document stricte. Il est préférable de gérer le tri principalement sur l'horodatage de mise à jour et secondairement sur l'ID de document et la gestion du cas où l' horodatage de mise à jour est inchangé séparément. Voir indexRequest.sql à partir de l'exemple de projet.
La requête de la demande d'index obtient trois paramètres liés: afterDocument (String), fromTimeNanos (INT64) et documentLimit (UInt16) et doit renvoyer les lignes de deux colonnes: id (String) et updatedNanos (int64). Les paramètres des limites sont mentionnés en les préfixant avec un côlon:
where :afterDocument > 2 La mise en œuvre de la demande de document est encore plus facile, car cela ne doit récupérer que tous les documents pour une liste des ID de document: documentRequest.sql. Le paramètre lié unique wantedIDs sera remplacé par une liste des ID de document (chaîne).
La requête de la demande de document doit renvoyer les lignes d' id (String), updatedNanos (INT64), title (String), txt (String) et alive (bool).
LetArette.SQL utilise des balises de construction pour contrôler les pilotes intégrés dans le binaire de services. Les balises de construction ont les mêmes noms que les pilotes qu'ils permettent.
La liste actuelle des balises de construction du pilote est:
Par exemple, pour construire un binaire avec "Postgres" et "MySQL" Support:
$ go build -tags " postgres,mysql "Le service letArette.SQL est configuré par les variables environnementales.
| Variable | Taper | Description |
|---|---|---|
| Lrsql_nats_url | Chaîne | URL pour que le service NATS se connecte, par défaut à nats://localhost:4222 . |
| Lrsql_nats_topic | Chaîne | NATS Topic Préfixe pour tous les messages, par défaut à leta . |
| Lrsql_index_space | Chaîne | L'espace d'index pour servir, par défaut vers docs . |
| Lrsql_db_driver | Chaîne | Nom du pilote de base de données |
| Lrsql_db_connection | Chaîne | Chaîne de connexion de la base de données |
| Lrsql_sql_indexsqlfile | Chaîne | Fichier source SQL pour gérer les demandes d'index. Par défaut: indexrequest.sql . |
| Lrsql_sql_documentsqlfile | Chaîne | SQL Source a déposé pour gérer les demandes de documents. Par défaut: documentrequest.sql . |