Anda dapat mengakses dan menelusuri data yang disimpan di Apache Solr menggunakan integrasi penelusuran eksternal di AlloyDB Omni. Integrasi ini memungkinkan Anda memindahkan workload penelusuran teks lengkap yang intensif, penguraian kueri yang kompleks, dan faset lanjutan dari database operasional ke Solr, sehingga meningkatkan latensi kueri dan throughput sistem secara keseluruhan.
Sebelum memulai
Sebelum memulai, selesaikan langkah-langkah berikut:
- Menginstal AlloyDB Omni menggunakan container.
- Men-deploy dan menjalankan Apache Solr dalam produksi.
Menyimpan kredensial Solr di Secret Manager
AlloyDB Omni menyimpan dan membaca kredensial Solr Anda dari Secret Manager. Untuk autentikasi HTTP Dasar, nilai secret di Secret Manager harus berupa string berenkode base64 dalam format username:password. Untuk mengetahui informasi selengkapnya tentang cara menggunakan
Secret Manager, lihat
Membuat dan mengakses secret menggunakan Secret Manager.
Pastikan akun layanan yang digunakan AlloyDB Omni memiliki
izin secretmanager.secretAccessor untuk membaca secret dari
Secret Manager. Untuk mengetahui informasi selengkapnya, lihat
Mengelola akses ke secret.
Mengaktifkan dan mengonfigurasi ekstensi external_search_fdw
Untuk memulai integrasi dengan Solr, konfigurasikan akses ke cluster Solr Anda melalui server data asing.
Hubungkan ke database Anda dan aktifkan ekstensi:
CREATE EXTENSION external_search_fdw;Buat server asing:
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' );Ganti variabel berikut:
SOLR_SERVER_NAME: nama untuk server data asing Anda. Contoh,solr.SOLR_SERVER_HOST_PORT: URL yang ditampilkan secara publik untuk cluster Solr Anda. Contoh,https://node1.solr.test.com:8983.AUTH_METHOD: jenis autentikasi yang akan digunakan. Contoh,Basic.SECRET_PATH: Jalur Secret Manager ke kredensial autentikasi Solr Anda. Contoh,projects/PROJECT_ID/secrets/apikey/versions/1.
Tentukan pemetaan pengguna untuk server Solr:
CREATE USER MAPPING FOR CURRENT_USER SERVER SOLR_SERVER_NAME;Memetakan skema koleksi Solr Anda ke tabel asing 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' );Ganti variabel berikut:
SOLR_FD_TABLE: nama tabel data asing yang mewakili tabel Solr Anda. Contoh,my-fd-solr-table.SOLR_FIELDS: daftar yang dipisahkan koma dengan setiap entri mengikuti formatsolr_field_name PG_DATA_TYPE. Untuk mengetahui daftar jenis data Solr yang didukung dan jenis PostgreSQL yang sesuai, lihat Jenis data yang didukung.UNIQUE_KEY_SORT_SUFFIX: (Opsional) kolom kunci unik di Solr, atau daftar yang dipisahkan koma dari beberapa kolom dengan tata urutannya—misalnya,myid0 ASC, myid1 DESC, yang digunakan untuk penomoran halaman. Setelan defaultnya adalahid.PG_DATA_TYPE: jenis PostgreSQL yang ingin Anda petakan. Contoh:TEXTuntuk data string.INTEGERuntuk data numerik.
SOLR_COLLECTION_NAME: nama koleksi Solr Anda. Contoh,my-solr-collection.
Membuat kueri data Solr Anda
AlloyDB Omni mengonversi kueri SQL menjadi kueri REST API Solr.
Kueri SQL standar
Untuk ekspresi penelusuran, Anda dapat menggunakan SQL standar dengan sintaksis Lucene.
SELECT id, body
FROM SOLR_FD_TABLE
WHERE FILTER
ORDER BY metadata <@> 'QUERY';
Ganti variabel berikut:
SOLR_FD_TABLE: nama tabel data asing yang mewakili tabel Solr Anda. Contoh,my-fd-solr-table.FILTER: (Opsional) filter yang akan diterapkan ke kueri Solr Anda. Contoh,a = 10 AND qubits < 105.QUERY: kueri yang akan dikirim ke Solr. Contoh,body:database.
DSL Kueri
Untuk kasus penggunaan lanjutan — seperti menerapkan kueri bertingkat, pengurutan yang disesuaikan, atau pemfilteran yang kompleks — gunakan DSL Kueri bergaya JSON Solr.
SELECT id, title
FROM SOLR_FD_TABLE
ORDER BY metadata <@> $${
"query": "title:solr",
"filter": ["category:software", "inStock:true"],
"sort": "price desc"
}$$
LIMIT 1;
Ganti SOLR_FD_TABLE dengan nama tabel data asing yang mewakili tabel Solr Anda. Contoh,
my-fd-solr-table.
Penelusuran campuran
Untuk melakukan penelusuran campuran pada data Solr Anda, gabungkan hasil penelusuran token Solr dengan hasil penelusuran vektor 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;
Ganti variabel berikut:
LIMIT: jumlah hasil yang akan ditampilkan. Contoh,10.WEIGHT: kontribusi entri penelusuran ini terhadap Reciprocal Rank Fusion (RRF) secara keseluruhan. Contoh,0.5. Jika Anda tidak memberikan bobot, bobot akan didistribusikan secara merata. Untuk mengetahui informasi selengkapnya, lihat Parameter fungsi penelusuran hybrid.SOLR_FD_TABLE: nama tabel data asing yang mewakili tabel Solr Anda. Contoh,my-fd-solr-table.QUERY: kueri yang akan dikirim ke Solr. Contoh,body:database.
Pemecahan masalah
Jika Anda mengalami masalah autentikasi atau konektivitas saat mengkueri cluster Solr, periksa hal berikut:
Error autentikasi HTTP 401 atau 403: pastikan secret Solr Anda di Secret Manager berisi string berenkode base64 dalam format
username:passworddan akun layanan yang digunakan AlloyDB Omni memiliki izinsecretmanager.secretAccessor.Waktu tunggu koneksi habis: verifikasi aturan jaringan dan konfigurasi firewall antara AlloyDB Omni dan endpoint Solr Anda.
Batasan
Hanya baca: AlloyDB Omni membaca, tetapi tidak menulis ke, data Solr.
Pengelolaan data: AlloyDB Omni tidak otomatis mengindeks data database Anda ke Solr. Anda bertanggung jawab untuk mengisi koleksi Solr dan menjaga konsistensi antara data di AlloyDB Omni dan data yang diindeks di Solr.
Pengelolaan skema: AlloyDB Omni tidak otomatis menyinkronkan skema dengan Solr. Jika skema koleksi Solr Anda berubah, perbarui skema tabel asing PostgreSQL yang sesuai secara manual.
Jenis yang tidak didukung: jenis Solr khusus, seperti jenis geospasial, tidak didukung.
Pengurutan stabil: agar penomoran halaman berfungsi dengan benar, Solr memerlukan kunci unik dalam ekspresi pengurutan. Secara default, kolom
idakan digunakan. Untuk menentukan kolom kustom, atau daftar yang dipisahkan koma dari beberapa kolom beserta tata urutan masing-masing, gunakan opsiunique_key_sort_suffixsaat Anda membuat tabel asing. Misalnya, tentukanmyid0 ASC, myid1 DESC.
Langkah berikutnya
Pelajari cara Mengakses data OpenSearch.
Pelajari cara Mengakses data Elasticsearch.
Pelajari cara Menjalankan penelusuran kemiripan vektor campuran.