Puoi accedere ai dati archiviati in Apache Solr ed eseguire ricerche utilizzando l'integrazione della ricerca esterna in AlloyDB Omni. Questa integrazione ti consente di trasferire dal tuo database operativo a Solr i workload di ricerca a testo intero intensiva, analisi di query complesse e faceting avanzato, migliorando la latenza delle query e il throughput complessivo del sistema.
Prima di iniziare
Prima di iniziare, completa i seguenti passaggi:
- Installa AlloyDB Omni utilizzando i container.
- Esegui il deployment e l'esecuzione di Apache Solr in produzione.
Archivia le credenziali Solr in Secret Manager
AlloyDB Omni archivia e legge le tue credenziali 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 Crea e accedi 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ù, consulta Gestisci l'accesso ai secret.
Attiva e configura l'estensione external_search_fdw
Per avviare l'integrazione con Solr, configura l'accesso al cluster Solr tramite un server di dati esterno.
Connettiti al database e abilita 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 esterno. Ad esempio,solr.SOLR_SERVER_HOST_PORT: URL pubblico del cluster Solr. Ad esempio,https://node1.solr.test.com:8983.AUTH_METHOD: il tipo di autenticazione da utilizzare. Ad esempio,Basic.SECRET_PATH: il percorso di Secret Manager per le tue 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 tua 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 relativi tipi PostgreSQL, consulta Tipi di dati supportati.UNIQUE_KEY_SORT_SUFFIX: (facoltativo) il campo della chiave univoca in Solr o un elenco separato da virgole di più campi con i relativi ordinamenti, ad esempiomyid0 ASC, myid1 DESC, utilizzato per l'impaginazione. Il valore predefinito èid.PG_DATA_TYPE: il tipo PostgreSQL a cui vuoi mappare il tipo di origine. Ad esempio:TEXTper i dati di tipo stringa.INTEGERper i dati numerici.
SOLR_COLLECTION_NAME: il nome della tua raccolta Solr. Ad esempio,my-solr-collection.
Esegui query sui dati Solr
AlloyDB Omni converte le query SQL in query API REST 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,a = 10 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 filtro complesso, utilizza il DSL di query 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 tua tabella Solr. Ad esempio: my-fd-solr-table.
Ricerche ibride
Per eseguire una ricerca ibrida sui dati Solr, unisci i risultati della ricerca di token Solr ai 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: il contributo di questa voce di ricerca al Reciprocal Rank Fusion (RRF) complessivo. Ad esempio,0.5. Se non fornisci i pesi, questi vengono distribuiti in modo uniforme. Per saperne di più, 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 il account di servizio 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, ma non scrive, i dati Solr.
Gestione dei dati: AlloyDB Omni non indicizza automaticamente i dati del database in Solr. Sei responsabile della compilazione delle tue raccolte Solr e del mantenimento della coerenza tra i dati in AlloyDB Omni e i dati indicizzati in Solr.
Gestione degli schemi: 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 con i relativi ordinamenti 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.