Interogare sau căutare – De ce nu amândouă?

(16 octombrie 2020)

Ziua 2 de participare la Evenimentul Couchbase Connect și, așa cum am promis în, mă scufund mai puțin în unele dintre actualizările de interogare N1QL care au impact asupra căutării textului integral.

Ca o parte, obișnuiam să a lucrat la Couchbase și a fost managerul de produs care a lansat produsul Full-Text Search – așa că este aproape de inima mea chiar și acum. De aceea, vin la discursul „Căutare text simplificată” vineri la același eveniment. Mai multe despre asta la sfârșitul acestui articol.

Căutarea în text complet (FTS aka Căutare) este un subiect propriu, dar tot ce trebuie să știți pentru acest articol este că este un serviciu sau un set separat de capabilități din serviciul de interogare de tip N1QL SQL al Couchbase. Similar cu bazele de date relaționale, N1QL utilizează un set de indici cunoscuți ca Indexare secundară globală (GSI).

Serviciul Couchbase Search are propriul set de indexuri și permite căutarea mai flexibilă, cu o conștientizare puternică a limbajului, pentru text în câmpuri sau obiecte din documentele JSON.

Discuția lui Binh Le Flex Index – Pârghie de căutare cu predicat SQL standard fără limitări de interogare se scufundă în caracteristicile N1QL care permit unei interogări să utilizeze fie indici GSI, fie FTS, în funcție de nevoie. Aceasta este o nouă funcție interesantă și există două moduri în care este accesibilă.

Diapozitivele de mai jos provin din discuția lui Binh – vă rugăm să consultați discuția completă pentru o scufundare mult mai profundă și câteva exemple live.

Aplicațiile pot alege să utilizeze Căutare text complet sau interogări GSI

N1QL cu funcție de predicare de căutare

Prima modalitate de a utiliza un indice FTS dintr-o căutare N1QL este prin adăugarea unui SEARCH () predicat la WHERE clauză. Această ilustrație prezintă diferitele modalități de interogare a serviciilor Couchbase – oferind un singur punct de intrare în funcție de cazul de utilizare.

# 3 în graficul de mai sus arată apelul N1QL către funcția SEARCH:

WHERE … SEARCH (indexName, text pentru a căuta) )

Acest lucru va limita rezultatele la potrivirile dintre toate predicatele din UNDE clauza și documentele care au o potrivire pentru căutare. Aceasta folosește cele mai elementare capabilități de interogare a textului FTS, dar este intenționat de simplă.

N1QL cu Index Hint

Abordarea alternativă este prezentată în diapozitivul lui Binh din partea dreaptă jos. De altfel, acest diapozitiv este un rezumat excelent al abordărilor din alte baze de date și produse de căutare.

În cazul indicării indexului, o afirmație simplă din clauza FROM este tot care este necesar pentru a valorifica indexurile FTS existente:

FROM crm USE INDEX (USING FTS)

De asemenea, ar putea folosi în mod explicit (USING GSI) dar cred că este valoarea implicită.

Prin utilizarea acestui indiciu, interpretul de interogare N1QL va verifica dacă coloanele utilizate în UNDE clauza (de ex. titlu și tip ) sunt indexate de FTS. Dacă da, vor fi utilizate în locul oricăror indici GSI – fără a fi necesară nicio altă intrare.

Rețineți că câmpurile din SELECT va fi extrasă automat din sursa do cumulative și returnate utilizatorului fără a fi nevoie să efectuați un al doilea apel din aplicația dvs.

Căutare prefix cu LIKE predicate, intervale de date, intervale numerice și multe altele sunt susținute de această abordare și convertite în interogări puternice FTS din spatele scenei. Consultați postarea de blog cuprinzătoare a lui Binh pentru mai multe detalii.

Cum veți folosi acest lucru?

Fluxul de lucru este simplu: indexați câmpurile relevante pentru căutarea textului, apoi adăugați indiciu la interogările dvs. existente. Acest lucru este minunat pentru prototipare și testare cu FTS. Puteți adăuga o minusculă clauză la interogările dvs. și nu trebuie să modificați aplicațiile într-un mod substanțial.

Apoi, dacă vă dați seama că doriți să utilizați căutarea textului în loc de N1QL, puteți avea o idee despre cum receptiv va fi. Scopul FTS este să fie mai rapid și să vă ofere un set rapid de meciuri relevante și marcate.

Alternativ, dacă utilizați deja FTS pentru a vă alimenta aplicațiile, puteți încerca să profitați de interogările N1QL, astfel încât să nu trebuie să efectuați un apel separat pentru a prelua valorile câmpului din documentele care se potrivesc.

De ce contează acest lucru?

Fiecare întreprindere se luptă cu menținerea unui set tot mai mare de sisteme din ce în ce mai complexe. Am fost întotdeauna un avocat pentru o abordare sistemică modulară care permite proiectanților de sistem să schimbe / să scoată diferite componente după cum este necesar. Cu toate acestea, acest lucru este într-adevăr ideal doar în timpul fazelor de testare și dezvoltare. Pentru planificarea pe termen lung, este extrem de benefic să se standardizeze pe un set de capabilități de bază și să se fi integrat cât mai strâns posibil.

Couchbase își propune să furnizeze o platformă generală pentru toate nevoile cheie-valoare și documente – inclusiv interogarea , căutare text, analize, evenimente etc. toate pe o platformă distribuită, de înaltă performanță. Acest lucru este mai mult decât vorbi despre marketing :). Această consolidare a capabilităților permite administratorilor și dezvoltatorilor să devină experți într-o singură platformă în loc să trebuiască să învețe mai multe.

Dacă ați putea prăbuși mai multe componente ale sistemului într-o experiență unificată, cred că ați vedea că vă va afecta TCO în moduri la care nu te-ai aștepta neapărat.

Cred că este important și de ce sunt optimist pe acest tip de integrare N1QL / Căutare – bravo pentru simplitate!

Sper că vă veți alătura discuției mele mâine (ziua 3 a evenimentului) la 10:00 PDT – Căutare text simplificată – Metode și arhitectură , unde ofer o introducere ușoară a conceptelor de căutare a textului complet și vă ajut să înțelegeți ansamblul arhitectura serviciului. Înregistrați-vă aici .

Vă mulțumim că ați citit!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *