Fråga eller sökning – Varför inte båda?

Publicerad

(16 okt 2020)

Dag 2 när du deltar i Couchbase Connect-händelse och, som lovat i, dyker jag lite mer in i några av N1QL-förfrågningsuppdateringarna som påverkar sökning i fulltext.

Som en åtminstone brukade jag arbetade på Couchbase och var Product Manager som lanserade Full-Text Search-produkten – så det ligger mitt hjärta redan nu. Det är därför jag håller mitt ”Förenklad textsökning” -prat på fredagen vid samma evenemang. Mer om det i slutet av den här artikeln.

Fulltext-sökning (FTS aka Search) är ett eget ämne men allt du behöver veta för den här artikeln är att det är en separat tjänst eller uppsättning av funktioner från den N1QL SQL-liknande frågetjänsten i Couchbase. I likhet med relationsdatabaser använder N1QL en uppsättning index som kallas Global Secondary Indexing (GSI).

Couchbase Search-tjänsten har sin egen uppsättning index och möjliggör mer flexibel sökning, med kraftfull språkmedvetenhet, för text inom fält eller objekt i JSON-dokument.

Binh Les diskussion Flexindex – Utnyttja sökning med standard SQL-predikat utan sökbegränsning dyker in i N1QL-funktionerna som gör att en fråga kan använda antingen GSI- eller FTS-index beroende på behov. Det här är en cool ny funktion och det finns två sätt att den är tillgänglig.

Bilden nedan är från Binhs föredrag – se hela föredraget för ett mycket djupare dyk och några liveexempel.

Applikationer kan välja att använda Fulltext-sökning eller GSI-drivna frågor

N1QL med sökpredikatfunktion

Det första sättet att utnyttja ett FTS-index inifrån en N1QL-sökning är genom att lägga till en SÖK () predikat till WHERE -satsen. Denna illustration visar de olika sätten att fråga efter Couchbase-tjänster – tillhandahåller en enda ingångspunkt beroende på användningsfallet.

# 3 i bilden ovan visar N1QL-samtalet till SÖK-funktionen:

VAR… SÖK (indexnamn, ”text att söka efter” )

Detta begränsar resultaten till matchningar mellan alla predikat i WHERE -satsen och dokument som har en match för sökningen. Detta använder de mest grundläggande FTS-textfrågefunktionerna men är avsiktligt enkelt.

N1QL med indextips

Det alternativa tillvägagångssättet visas i Binhs bild längst ner till höger. För övrigt är den här bilden en bra sammanfattning av tillvägagångssätt över andra databas- och sökprodukter.

När det gäller indextips är ett enkelt uttalande i FRÅN klausulen allt som behövs för att utnyttja befintliga FTS-index:

FRÅN crm USE INDEX (USING FTS)

Det kan också uttryckligen använda (USING GSI) men det är standard tror jag.

Genom att använda detta tips kommer N1QL-frågetolkaren att kontrollera om de kolumner som används i VAR klausul (t.ex. titel och typ ) indexeras av FTS. Om så är fallet de kommer att användas istället för GSI-relaterade index – utan någon annan ingång krävs.

Observera att fälten i VÄLJ -satsen dras automatiskt från källan och återvände till användaren utan att behöva ringa ett andra samtal från din applikation.

Prefixsökning med LIKE predikat, datumintervall, numeriska intervall och mer stöds av detta tillvägagångssätt och omvandlas till kraftfulla FTS-frågor bakom kulisserna. Se Binhs omfattande blogginlägg för mer information.

Hur kommer du att använda detta?

Arbetsflödet är enkelt: indexera relevanta fält för textsökning och lägg sedan till ledtråden till dina befintliga frågor. Det här är utmärkt för prototyper och testning med FTS. Du kan lägga till en liten sats i dina frågor och inte behöva ändra applikationer på ett väsentligt sätt.

Om du sedan inser att du vill använda textsökning istället för N1QL kan du få en uppfattning om hur lyhörd blir det. Målet med FTS är att vara snabbare och ge dig en snabb uppsättning relevanta och noterade matcher.

Alternativt, om du redan använder FTS för att driva dina applikationer, kan du försöka dra nytta av N1QL-frågor istället så att du inte behöver ringa ett separat samtal för att hämta fältvärden från matchande dokument.

Varför spelar det någon roll?

Alla företag kämpar för att upprätthålla en växande uppsättning alltmer komplexa system. Jag har alltid varit en förespråkare för en modulär systemstrategi som gör att systemdesigners kan byta in / ut olika komponenter efter behov. Men det är egentligen bara perfekt under test- och utvecklingsfaserna. För långsiktig planering är det mycket fördelaktigt att standardisera på en kärnuppsättning av funktioner och att ha integrerats så tätt som möjligt.

Couchbase syftar till att leverera en övergripande plattform för alla nyckelvärden och dokumentbehov – inklusive frågor , textsökning, analys, eventing etc. på en distribuerad, högpresterande plattform. Detta är mer än bara marknadsföring tala :). Denna konsolidering av funktioner gör det möjligt för administratörer och utvecklare att bli experter på en enda plattform istället för att behöva lära sig flera.

Om du skulle kunna kollapsa flera systemkomponenter till en enhetlig upplevelse tror jag att du skulle se det påverka din TCO på sätt som du inte nödvändigtvis skulle förvänta dig.

Jag tycker det är viktigt och varför jag är hausse på denna typ av N1QL / sökintegration – bravo för enkelhetens skull!

Jag hoppas att du går med i mitt föredrag imorgon (dag 3 av evenemanget) klockan 10:00 PDT – Förenklad textsökning – Metoder och arkitektur där jag ger en mild introduktion till fulltextsökningskoncept och hjälper dig att förstå det övergripande tjänstens arkitektur. Registrera dig här .

Tack för att du läste!

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *