MongoDB fulltekstsøk

MongoDB fulltekstsøk
På grunn av sin raske respons, avanserte versjon, bærekraft og sterke indekseringsevner, er MongoDB en av de mest anerkjente NoSQL -databasene. I mange tilfeller vil MongoDB -spørsmål som klassifiserer data ved å lete etter presise kamper, bruke betydelig større og mindre enn sammenligninger, eller bruke vanlige uttrykk. Når det gjelder screening mot felt med rike tekstdata, kommer imidlertid disse strategiene til kort. Denne guiden vil hjelpe oss med å lage en MongoDB-tekstindeks og bruke den til å søke etter dokumenter som bruker vanlige søksøk og kriterier for fulltekst.

Når vi ser materiale som bruker setninger eller nøkkelord, er det beste eksemplet et Google -søk. Med MongoDB fulltekstsøk kan vi etablere en tekstindeks på hvilken som helst kolonne i et dokument ved hjelp av en streng eller matriser av strenger.

Syntaks av fulltekstsøket i MongoDB i Ubuntu 20.04 ?

Den nevnte syntaksen er som følger:

db.Collection_name.finn ($ tekst: $ search: “string”)

Finn () -funksjonen brukes med følgende parametere i syntaksen ovenfor:

  • Collection_name: refererer til navnet på den eksisterende samlingen.
  • Finne: utført for å søke ved å bruke funnet.
  • $ tekst: pleide å gjøre et samlingssøk som tilfredsstiller våre mål.
  • $ søk: pleide å utføre søket.
  • Streng: refererer til en viss streng som vi vil se etter i samlingen, og vi kan bruke søkefunksjonen for å finne eksakte ord.

Arbeider med $ tekstoperatøren i MongoDB i Ubuntu 20.04:

Tekstlister leveres av MongoDB for å hjelpe tekstsøk på strenginnhold. Ethvert felt med en strengverdi eller en rekke strengkomponenter kan inkluderes i tekstposter. Du bør ha en tekstpost i samlingen din for å gjøre tekstsøkingsspørsmål. Selv en samling har bare ett emne -søkepost. En liste kan spenne over flere felt.

Hvordan fulltekstsøket fungerer i MongoDB i Ubuntu 20.04

Se nå på visse eksempler for å forstå ting bedre. Først har vi opprettet en database med navnet "MyDemo". Inne i denne databasen har vi definert en samling som "frukt". Deretter brukes INSERTMANY -spørringen til å sette inn samlingsdokumentet da skjermbildet viser feltene og verdiene mot disse feltene for samlingen "Fruits" -dokumentet nedenfor.

Spørringen “DB.frukt.Finn () ”Resultater i attributtene og enhetene i samlingen“ Fruits ”som følger. Vi har tre dokumenter spilt inn for samlingen av "frukt".

La oss nå undersøke hvordan vi kan utføre et fulltekstsøk.

Eksempel 1: Opprette tekstindeks i MongoDB i Ubuntu 20.04:

Vi må etablere en tekstindeks på et datasett før du kan bruke MongoDBs fulltekstsøkfunksjoner. Indekser er unike datastrukturer som isolerer et begrenset stykke data fra hver tekst i en samling fra dokumentene selv. La oss se på hvordan du utfører et fulltekstsøk.

En tekstindeks er bygget på samme måte som en konvensjonell indeks, i stedet for å definere en stigende/synkende rekkefølge, definerer den tekstnøkkelordet.

Over har vi et spørsmål om et fulltekstsøk. Vi har brukt CreateIndex () -metoden for å opprette en tekstindeks. Vi setter de to feltene "emne" og "innhold" til indekstype-teksten.

Ved å kjøre CreateIndex -spørringen på MongoDB -skallet, bekrefter følgende utgang indeksopprettelsen:

Eksempel nr. 2: Søker etter et ord eller en setning fra fulltekst i MongoDB i Ubuntu 20.04:

Å slå opp dokumenter som består av ett eller flere enkeltord er kanskje den mest utbredte søkeutfordringen. Brukere forventer sannsynligvis at nettleseren vil være tilpasningsdyktig til å velge hvor de bestemte søkesetningene skal vises. Når du bruker tekstindekser, nærmer MongoDB vanlige søk på samme måte. Med noen få eksempler forklarer dette trinnet hvordan MongoDB behandler søkeforespørsler.

Her har vi en spørring “DB.frukt.finne()". Spørringen bruker $ tekstoperatøren, som informerer MongoDB her om at spørringen vil benytte seg av tekstindeksen vi tidligere er definert. Også bare en tekstindeks er tillatt i hver samling. Deretter, inne i $ tekstoperatøren, har vi en annen operatør som heter $ søk som brukes til å søke på verdien "søt" fra de gitte dokumentene.

Som du kan se, har vi bare ett dokument med tekstinnholdet "søtt". Ved å kjøre spørringen ovenfor, vises hele detaljene i dokumentet som har tekstinnholdet "søtt" som følger:

Nå søker vi etter to ord ved å bruke følgende spørsmål:

Vi har gitt to-ordet "vitamin C" til $ søkeoperatøren som kalles inne i $ tekstoperatøren. Når spørringen kjøres, viser det at dokumentoppføringen har vitamin C som er oppført i teksten som følger:

Eksempel nr. 3: Å score og sortere søkeresultatene i fulltekst i MongoDB i Ubuntu 20.04:

Hvert dokument mottar en poengsum fra tekstsøket som indikerer hvor relevant det er for søket. Denne poengsummen brukes til å kategorisere alle postene i et søkeresultat. En høyere poengsum betyr at konkurransen er mer meningsfull.

Vi har en $ tekstoperatør som søker i de to ordene "mango" og "oransje" ved hjelp av en $ søkeoperatør. Deretter har vi en projeksjon score: $ meta: “textscore” som benytter seg av $ metaoperatøren, som returnerer spesifiserte metadata fra hentede dokumenter. TextScore-metadataene, som er en innebygd komponent i MongoDBs fulltekstsøkemotor og har søkelevanspoengsummen, blir returnert i dette tilfellet.

Som nevnt i filterdokumentet, vil de resulterende dokumentene legge til et nytt felt som heter poengsum etter å ha utført spørringen:

Nå har vi brukt sortfunksjon for projeksjonen score: $ meta: “textscore”. Sorteringsdokumentet bruker samme syntaks som projeksjonsdokumentet.

Teksten Mango har størst relevansescore, så den kommer først på utgangsskjermen.

Konklusjon:

Vi har skaffet oss hvordan du bruker MongoDBs fulltekstsøkfunksjonalitet ved å følge denne opplæringen. Du bygde en tekstindeks og sammensatte tekstsøk som inkluderte ett og mange ord, hele setninger og eksklusjoner. Du har også gradert relevansen av de returnerte papirene og beordret søkeresultatene til å vise de mest relevante elementene først.