Puoi accedere ai dati archiviati in Apache Solr ed eseguirne la ricerca utilizzando l'integrazione della ricerca esterna in AlloyDB Omni. Questa integrazione ti consente di trasferire i carichi di lavoro intensivi di ricerca a testo intero, analisi di query complesse e sfaccettature avanzate dal tuo database operativo a Solr, migliorando la latenza delle query e il throughput complessivo del sistema.
Prima di iniziare
Prima di iniziare, completa le seguenti operazioni:
- Installa AlloyDB Omni utilizzando i container.
- Esegui il deployment e l'esecuzione di Apache Solr in produzione.
Archivia le credenziali di Solr in Secret Manager
AlloyDB Omni archivia e legge le credenziali di Solr da
Secret Manager. Per l'autenticazione HTTP di base, il valore del
secret in Secret Manager deve essere una stringa con codifica base64 nel
formato username:password. Per saperne di più su come utilizzare
Secret Manager, consulta
Creare e accedere a un secret utilizzando Secret Manager.
Assicurati che il account di servizio utilizzato da AlloyDB Omni disponga dell'autorizzazione secretmanager.secretAccessor per leggere il secret da Secret Manager. Per saperne di più, vedi Gestire l'accesso ai secret.
Attivare e configurare l'estensione external_search_fdw
Per iniziare l'integrazione con Solr, configura l'accesso al cluster Solr tramite un server di dati esterni.
Connettiti al tuo database e attiva l'estensione:
CREATE EXTENSION external_search_fdw;Crea un server esterno:
CREATE SERVER SOLR_SERVER_NAME FOREIGN DATA WRAPPER external_search_fdw OPTIONS ( server 'SOLR_SERVER_HOST_PORT', search_provider 'solr', auth_mode 'secret_manager', auth_method 'AUTH_METHOD', secret_path 'SECRET_PATH' );Sostituisci le seguenti variabili:
SOLR_SERVER_NAME: il nome del server di dati esterni. Ad esempio,solr.SOLR_SERVER_HOST_PORT: URL pubblico del cluster Solr. Ad esempio,https://node1.solr.test.com:8983.AUTH_METHOD: tipo di autenticazione da utilizzare. Ad esempio,Basic.SECRET_PATH: il percorso di Secret Manager per le credenziali di autenticazione Solr. Ad esempio,projects/PROJECT_ID/secrets/apikey/versions/1.
Definisci la mappatura degli utenti per il server Solr:
CREATE USER MAPPING FOR CURRENT_USER SERVER SOLR_SERVER_NAME;Mappa lo schema della raccolta Solr a una tabella esterna PostgreSQL.
CREATE FOREIGN TABLE SOLR_FD_TABLE( metadata external_search_fdw_schema.OpaqueMetadata, SOLR_FIELDS) SERVER SOLR_SERVER_NAME OPTIONS( remote_table_name 'SOLR_COLLECTION_NAME', unique_key_sort_suffix 'UNIQUE_KEY_SORT_SUFFIX' );Sostituisci le seguenti variabili:
SOLR_FD_TABLE: il nome della tabella di dati esterni che rappresenta la tabella Solr. Ad esempio,my-fd-solr-table.SOLR_FIELDS: un elenco separato da virgole in cui ogni voce segue il formatosolr_field_name PG_DATA_TYPE. Per un elenco dei tipi di dati Solr supportati e dei tipi PostgreSQL corrispondenti, vedi Tipi di dati supportati.UNIQUE_KEY_SORT_SUFFIX: (facoltativo) il campo chiave univoco in Solr o un elenco separato da virgole di più campi con i relativi ordini di ordinamento, ad esempiomyid0 ASC, myid1 DESC, utilizzato per la paginazione. Il valore predefinito èid.PG_DATA_TYPE: il tipo PostgreSQL a cui vuoi eseguirne il mapping. Ad esempio:TEXTper i dati stringa.INTEGERper i dati numerici.
SOLR_COLLECTION_NAME: il nome della raccolta Solr. Ad esempio,my-solr-collection.
Eseguire query sui dati Solr
AlloyDB Omni converte le query SQL in query dell'API REST di Solr.
Query SQL standard
Per l'espressione di ricerca, puoi utilizzare SQL standard con la sintassi Lucene.
SELECT id, body
FROM SOLR_FD_TABLE
WHERE FILTER
ORDER BY metadata <@> 'QUERY';
Sostituisci le seguenti variabili:
SOLR_FD_TABLE: il nome della tabella di dati esterni che rappresenta la tabella Solr. Ad esempio,my-fd-solr-table.FILTER: (Facoltativo) filtro da applicare alla query Solr. Ad esempio,AND qubits < 105.QUERY: query da inviare a Solr. Ad esempio,body:database.
Query DSL
Per casi d'uso avanzati, come l'implementazione di query nidificate, l'ordinamento personalizzato o il filtraggio complesso, utilizza il Query DSL in stile JSON di Solr.
SELECT id, title
FROM SOLR_FD_TABLE
ORDER BY metadata <@> $${
"query": "title:solr",
"filter": ["category:software", "inStock:true"],
"sort": "price desc"
}$$
LIMIT 1;
Sostituisci SOLR_FD_TABLE con il nome della tabella di dati esterni che rappresenta la tabella Solr. Ad esempio: my-fd-solr-table.
Ricerche ibride
Per eseguire una ricerca ibrida sui tuoi dati Solr, unisci i risultati della ricerca di token Solr con i risultati della ricerca vettoriale di AlloyDB Omni.
SELECT *
FROM ai.hybrid_search(
ARRAY[
'{"limit": LIMIT,
"weight": WEIGHT,
"table_name": "SOLR_FD_TABLE",
"key_column": "id",
"query_text_input": "QUERY"}'::jsonb
])
ORDER BY score DESC;
Sostituisci le seguenti variabili:
LIMIT: il numero di risultati da restituire. Ad esempio,10.WEIGHT: contributo di questa voce di ricerca alla Reciprocal Rank Fusion (RRF) complessiva. Ad esempio,0.5. Se non fornisci i pesi, questi vengono distribuiti in modo uniforme. Per ulteriori informazioni, consulta Parametri della funzione di ricerca ibrida.SOLR_FD_TABLE: il nome della tabella di dati esterni che rappresenta la tabella Solr. Ad esempio,my-fd-solr-table.QUERY: query da inviare a Solr. Ad esempio,body:database.
Risoluzione dei problemi
Se riscontri problemi di autenticazione o connettività durante l'esecuzione di query sul cluster Solr, controlla quanto segue:
- Errori di autenticazione HTTP 401 o 403: verifica che il secret Solr in
Secret Manager contenga una stringa con codifica base64 nel formato
username:passworde che iaccount di serviziont utilizzato da AlloyDB Omni disponga dell'autorizzazionesecretmanager.secretAccessor. - Timeout di connessione: verifica le regole di rete e la configurazione del firewall tra AlloyDB Omni e l'endpoint Solr.
Limitazioni
- Sola lettura: AlloyDB Omni legge i dati di Solr, ma non li scrive.
- Gestione dei dati: AlloyDB Omni non indicizza automaticamente i dati del database in Solr. Sei responsabile del popolamento delle raccolte Solr e del mantenimento della coerenza tra i dati in AlloyDB Omni e i dati indicizzati in Solr.
- Gestione dello schema: AlloyDB Omni non sincronizza automaticamente gli schemi con Solr. Se lo schema della raccolta Solr cambia, aggiorna manualmente lo schema della tabella esterna PostgreSQL corrispondente.
- Tipi non supportati: i tipi Solr specializzati, come i tipi geospaziali, non sono supportati.
- Ordinamento stabile: affinché la paginazione funzioni correttamente, Solr richiede una chiave univoca nell'espressione di ordinamento. Per impostazione predefinita, viene utilizzato il campo
id. Per specificare un campo personalizzato o un elenco separato da virgole di più campi insieme ai relativi ordini di ordinamento individuali, utilizza l'opzioneunique_key_sort_suffixquando crei la tabella esterna. Ad esempio, specificamyid0 ASC, myid1 DESC.
Passaggi successivi
- Scopri come accedere ai dati di OpenSearch.
- Scopri come accedere ai dati di Elasticsearch.
- Scopri come eseguire una ricerca di somiglianza vettoriale ibrida.