Forespørgsel eller søgning – hvorfor ikke begge dele?

(16. okt. 2020)

Dag 2 for deltagelse i Couchbase Connect-begivenhed , og som lovet i dykker jeg lidt mere ned i nogle af N1QL-forespørgselsopdateringerne, der påvirker søgning i fuldtekst.

Som en side, plejede jeg at arbejdet hos Couchbase og var Product Manager, der lancerede Full-Text Search-produktet – så det ligger mig nært selv nu. Derfor holder jeg min “Forenklet tekstsøgning” -tale fredag ​​ved den samme begivenhed. Mere om dette i slutningen af ​​denne artikel.

Fuldtekstsøgning (FTS aka Search) er et eget emne, men alt hvad du behøver at vide til denne artikel er, at det er en separat tjeneste eller et sæt af kapaciteter fra N1QL SQL-lignende forespørgselstjeneste fra Couchbase. I lighed med relationsdatabaser udnytter N1QL et sæt indekser kendt som Global Secondary Indexing (GSI).

Couchbase Search-tjenesten har sit eget sæt indekser og giver mulighed for mere fleksibel søgning med kraftig sprogkendskab til tekst inden for felter eller objekter i JSON-dokumenter.

Binh Les diskussion Flex-indeks – Udnyt søgning med standard SQL-prædikat uden forespørgselsbegrænsning dykker ned i N1QL-funktionerne, der gør det muligt for en forespørgsel at bruge enten GSI- eller FTS-indekser afhængigt af behov. Dette er en sej ny funktion, og der er to måder, den er tilgængelig på.

Nedenstående dias er fra Binhs tale – se den fulde samtale for et langt dybere dyk og nogle live eksempler.

Applikationer kan vælge at bruge søgning i fuld tekst eller GSI-forespørgsler

N1QL med søgefunktionsfunktion

Den første måde at udnytte et FTS-indeks inden for en N1QL-søgning er ved at tilføje en SØG () predikat til HVOR klausul. Denne illustration viser de forskellige måder at forespørge på tværs af Couchbase-tjenester – hvilket giver et enkelt startpunkt afhængigt af brugen.

# 3 i ovenstående grafik viser N1QL-opkaldet til SEARCH-funktionen:

WHERE… SEARCH (indexName, text to search for )

Dette begrænser resultaterne til matches mellem alle predikater i WHERE -sætningen og dokumenter, der har en match til søgningen. Dette bruger de mest basale FTS-tekstforespørgselsfunktioner, men er med vilje enkel.

N1QL med indeksantip

Den alternative tilgang vises i Binhs dias nederst til højre. I øvrigt er dette dias en fantastisk oversigt over tilgange på tværs af andre database- og søgeprodukter.

I tilfælde af indeksantydning er en simpel sætning i FRA klausul alt der er nødvendigt for at udnytte eksisterende FTS-indekser:

FRA crm USE INDEX (USING FTS)

Det kunne også eksplicit bruge (USING GSI) men det er standard tror jeg.

Ved at bruge dette tip vil N1QL-forespørgseltolken kontrollere, om de kolonner, der er brugt i HVOR -klausul (f.eks. titel og type ) indekseres af FTS. Hvis ja, de vil blive brugt i stedet for GSI-relaterede indekser – uden yderligere input krævet.

Bemærk, at felterne i VÆLG klausul trækkes automatisk fra kildens gør og returneres til brugeren uden at skulle foretage et andet opkald fra din applikation.

Præfiks-søgning med LIKE prædikater, datointervaller, numeriske intervaller og mere understøttes af denne tilgang og konverteres til kraftige FTS-forespørgsler bag kulisserne. Se Binhs omfattende blogindlæg for flere detaljer.

Hvordan vil du bruge dette?

Arbejdsgangen er enkel: indekser relevante felter til tekstsøgning, og tilføj derefter tipet til dine eksisterende forespørgsler. Dette er fantastisk til prototyping og test med FTS. Du kan tilføje en lille klausul til dine forespørgsler og ikke behøver at ændre applikationer på en væsentlig måde.

Hvis du så indser, at du vil bruge tekstsøgning i stedet for N1QL, kan du få en idé om, hvordan lydhør det vil være. Målet med FTS er at være hurtigere og give dig et hurtigt sæt relevante og scorede kampe.

Alternativt, hvis du allerede bruger FTS til at drive dine applikationer, kan du prøve at udnytte N1QL-forespørgsler i stedet, så du ikke behøver at foretage et separat opkald for at hente feltværdier fra matchende dokumenter.

Hvorfor betyder dette noget?

Enhver virksomhed kæmper med at opretholde et voksende sæt af stadig mere komplekse systemer. Jeg har altid været talsmand for en modulær systemtilgang, der gør det muligt for systemdesignere at bytte ind / ud forskellige komponenter efter behov. Det er dog kun ideelt i test- og udviklingsfaserne. Til langsigtet planlægning er det meget fordelagtigt at standardisere på et kernesæt af funktioner og have integreret så tæt som muligt.

Couchbase sigter mod at levere en samlet platform til alle nøgleværdier og dokumentbehov – inklusive forespørgsel , tekstsøgning, analyse, eventing osv. alt sammen på en distribueret, højtydende platform. Dette er mere end bare marketing taler :). Denne konsolidering af kapaciteter giver administratorer og udviklere mulighed for at blive eksperter på en enkelt platform i stedet for at skulle lære flere.

Hvis du kunne kollapse flere systemkomponenter til en samlet oplevelse, tror jeg, du ville se det påvirke din TCO på måder, du ikke nødvendigvis ville forvente.

Jeg synes, det er vigtigt, og hvorfor jeg er bullish på denne type N1QL / Search integration – bravo for enkelhed!

Jeg håber, du vil deltage i min tale i morgen (begivenhedens dag 3) kl 10:00 PDT – Forenklet tekstsøgning – Metoder og arkitektur hvor jeg giver en blid introduktion til fuldtekstsøgningskoncepter og hjælper dig med at forstå det overordnede tjenestens arkitektur. Tilmeld dig her .

Tak for læsningen!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *