Query or Search – Why Not Both?

Pubblicato il

(16 ottobre 2020)

Secondo giorno di partecipazione al Couchbase Connect e, come promesso in, mi immergo ancora un po in alcuni degli aggiornamenti delle query N1QL che hanno un impatto sulla ricerca full-text.

Per inciso, ero solito lavorare in Couchbase ed è stato il Product Manager che ha lanciato il prodotto di ricerca full-text, quindi è vicino al mio cuore anche ora. Questo è il motivo per cui venerdì sto facendo il mio discorso “Ricerca di testo semplificata” nello stesso evento. Maggiori informazioni su questo argomento alla fine di questo articolo.

La ricerca full-text (FTS aka Search) è un argomento a sé stante, ma tutto ciò che devi sapere per questo articolo è che si tratta di un servizio o set separato di funzionalità dal servizio di query di tipo SQL N1QL di Couchbase. Simile ai database relazionali, N1QL utilizza un set di indici noto come Global Secondary Indexing (GSI).

Il servizio Couchbase Search dispone di un proprio set di indici e consente una ricerca più flessibile, con una potente conoscenza del linguaggio, per il testo allinterno di campi o oggetti nei documenti JSON.

Binh Les talk Indice flessibile – Sfrutta la ricerca con predicato SQL standard senza limitazioni di query si tuffa nelle funzionalità N1QL che consentono a una query di utilizzare indici GSI o FTS a seconda delle necessità. Questa è una nuova fantastica funzionalità e ci sono due modi in cui è accessibile.

Le diapositive seguenti sono tratte dal discorso di Binh: guarda il discorso completo per unimmersione molto più profonda e alcuni esempi dal vivo.

Le applicazioni possono scegliere di utilizzare la ricerca di testo completo o le query basate su GSI

N1QL con funzione di predicato di ricerca

Il primo modo per sfruttare un indice FTS da una ricerca N1QL è aggiungere un SEARCH () predicato alla clausola WHERE . Questa illustrazione mostra i vari modi per eseguire query sui servizi Couchbase, fornendo un unico punto di ingresso a seconda del caso duso.

# 3 nel grafico sopra mostra la chiamata N1QL alla funzione SEARCH:

WHERE… SEARCH (indexName, text to search for )

Ciò limiterà i risultati alle corrispondenze tra tutti i predicati nella clausola WHERE e i documenti che hanno una corrispondenza per la ricerca. Questo utilizza le funzionalità di query di testo FTS più elementari, ma è intenzionalmente semplice.

N1QL con suggerimento indice

Lapproccio alternativo è mostrato nella diapositiva di Binh in basso a destra. Per inciso, questa diapositiva è un ottimo riepilogo degli approcci in altri database e prodotti di ricerca.

Nel caso del suggerimento sullindice, una semplice istruzione nella clausola FROM è tutto che è necessario per sfruttare gli indici FTS esistenti:

FROM crm USE INDEX (USING FTS)

Potrebbe anche utilizzare esplicitamente (USING GSI) ma credo che sia limpostazione predefinita.

Utilizzando questo suggerimento, linterprete di query N1QL controllerà se le colonne utilizzate nel WHERE clausola (ad es. titolo e tipo ) sono indicizzati da FTS. In tal caso, verranno utilizzati al posto di qualsiasi indice relativo a GSI, senza che sia richiesto alcun altro input.

Tieni presente che i campi in SELECT verrà automaticamente estratta dalla sorgente do cuments e restituiti allutente senza dover effettuare una seconda chiamata dallapplicazione.

Prefisso di ricerca con LIKE , intervalli di date, intervalli numerici e altro sono supportati da questo approccio e convertiti in potenti query FTS dietro le quinte. Consulta il post del blog completo di Binh per maggiori dettagli.

Come lo utilizzerai?

Il flusso di lavoro è semplice: indicizzare i campi pertinenti per la ricerca di testo, quindi aggiungere il suggerimento alle query esistenti. Questo è ottimo per la prototipazione e il test con FTS. Puoi aggiungere una piccola clausola alle tue query e non dover cambiare le applicazioni in modo sostanziale.

Quindi, se ti rendi conto che vuoi usare la ricerca di testo invece di N1QL, puoi avere unidea di come reattivo sarà. Lobiettivo di FTS è essere più veloce e darti una rapida serie di partite rilevanti e segnate.

In alternativa, se stai già utilizzando FTS per alimentare le tue applicazioni, puoi provare a sfruttare le query N1QL in modo da non dover effettuare una chiamata separata per recuperare i valori dei campi dai documenti corrispondenti.

Perché è importante?

Ogni azienda ha difficoltà a mantenere un insieme crescente di sistemi sempre più complessi. Sono sempre stato un sostenitore di un approccio ai sistemi modulari che consente ai progettisti di sistemi di scambiare componenti diversi in base alle esigenze. Tuttavia, questo è davvero lideale solo durante le fasi di test e sviluppo. Per la pianificazione a lungo termine, è estremamente vantaggioso standardizzare su una serie di funzionalità fondamentali e integrarle il più strettamente possibile.

Couchbase mira a fornire una piattaforma globale per tutti i valori chiave e le esigenze dei documenti, comprese le query , ricerca di testo, analisi, eventi e così via su una piattaforma distribuita e ad alte prestazioni. Questo è più di un semplice discorso di marketing :). Questo consolidamento delle funzionalità consente agli amministratori e agli sviluppatori di diventare esperti in una singola piattaforma invece di doverne imparare diversi.

Se potessi comprimere diversi componenti di sistema in unesperienza unificata, credo che lo vedresti avere un impatto sul tuo TCO in modi che non ti aspetteresti necessariamente.

Penso che sia importante e perché sono ottimista su questo tipo di integrazione N1QL / Ricerca – bravo per semplicità!

Spero che partecipi al mio discorso domani (giorno 3 dellevento) alle 10:00 PDT – Ricerca di testo semplificata – Metodi e architettura in cui offro una breve introduzione ai concetti di ricerca nel testo completo e ti aiuto a capire il complesso architettura del servizio. Registrati qui .

Grazie per la lettura!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *