這是Letarette的全sql文檔管理器。要將基於SQL的主文檔存儲連接到Letarette,只需要提供兩個查詢。鑑於主存儲具有相似的結構,檢查示例以查看它們的基礎。
支持以下SQL驅動程序:
如果您只想嘗試一下,就會有一個docker-compose配置,該配置啟動了一個完整的小letarette系統,該系統由數據庫和示例項目中的查詢提供。
只需運行docker-compose up啟動系統。
當系統啟動時,您可以通過在“ Letarette”容器中運行lrcli來運行查詢(和其他命令):
$ 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…LETARETTE.SQL服務lrsql需要知道如何連接到SQL數據庫,以及在哪裡找到向Letarette索引器提供文檔的查詢。
為了使服務連接到PostgreSQL源,並為查詢文件位置使用默認值( indexrequest.sql和documentrequest.sql ):
$ export LRSQL_DB_DRIVER= " postgres "
$ export LRSQL_DB_CONNECTION= " postgres://user:password@localhost/testdb?sslmode=verify-full "
$ ./lrsql使用任何命令行參數運行lrsql將打印出可用的設置及其默認值。
Letarette索引器更新周期有兩個單獨的步驟,首先是比當前索引位置(索引請求)的文檔的“興趣列表”,然後在該列表上獲取文檔(文檔請求)。
時間戳為UTC-引用的UNIX EPOCH納米秒。
當前的索引位置是文檔ID和該文檔的更新時間戳的組合。為了處理自上次獲取索引位置文檔已更新的情況,索引請求查詢需要遵循嚴格的文檔訂購。最好通過主要在更新時間戳上進行排序,其次是在文檔ID上進行排序,並處理更新時間戳不變的情況。請參閱示例項目中的indexrequest.sql。
索引請求查詢獲取三個綁定參數: afterDocument (String), fromTimeNanos (INT64)和documentLimit (UINT16),並應返回兩個列的行: id (String)和updatedNanos (INT64)。邊界參數是通過將結腸前綴前綴來提及的:
where :afterDocument > 2 實施文檔請求甚至更容易,因為這只需要檢索文檔ID列表的所有文檔:documentRequest.sql。單界參數wantedIDs將被文檔ID列表替換(字符串)。
文檔請求查詢應返回id (String), updatedNanos (INT64), title (String), txt (String)和alive (Bool)的行。
letarette.sql使用構建標籤來控制服務二進制中的哪些驅動程序。構建標籤具有與啟用驅動程序相同的名稱。
當前的驅動程序構建標籤列表是:
例如,用“ Postgres”和“ MySQL”支持構建二進製文件:
$ go build -tags " postgres,mysql "letarette.sql服務由環境變量配置。
| 多變的 | 類型 | 描述 |
|---|---|---|
| lrsql_nats_url | 細繩 | url供NATS服務連接到nats://localhost:4222 。 |
| lrsql_nats_topic | 細繩 | NATS主題前綴所有消息,默認為leta 。 |
| lrsql_index_space | 細繩 | 索引空間,默認為docs 。 |
| lrsql_db_driver | 細繩 | 數據庫驅動程序名稱 |
| lrsql_db_connection | 細繩 | 數據庫連接字符串 |
| lrsql_sql_indexssqlfile | 細繩 | 用於處理索引請求的SQL源文件。默認值: indexrequest.sql 。 |
| lrsql_sql_documentsqlfile | 細繩 | SQL源用於處理文檔請求。默認值: documentrequest.sql 。 |