Hvad er forskellen mellem fuzzy Query og match Query?

Hvad Er Forskellen Mellem Fuzzy Query Og Match Query



Elasticsearch er en velkendt, gratis, open source, analytisk og distribueret søgemaskine og database, der bruges til at administrere forskellige typer data. Det er udelukkende en NoSQL-database og fungerer anderledes end typiske SQL- og relationsdatabaser. Elasticsearch bruger forespørgsel DSL ((Domain Specific Language) og REST API'er til at administrere og analysere dataene. Der findes forskellige typer forespørgsler i Elasticsearch såsom fuzzy query, match-forespørgsel, wild card-forespørgsel, præfiks-forespørgsel og mange flere. Disse forespørgsler fungerer forskelligt fra hinanden.

Dette indlæg demonstrerer på:

Hvad er en 'fuzzy' forespørgsel?

Det ' sløret ' forespørgsel er en forespørgsel DSL, der udfører andre søgninger, såsom at ændre tegnet, indsætte tegnet eller fjerne tegnet baseret på ' Levenshtein redigere afstand ' afstand. Det finder normalt forskellen mellem termer og returnerer resultatet i et dokument, der er tættere på eller næsten ligner det søgte udtryk.







Hvad er en 'match'-forespørgsel?

Det ' match ” forespørgsel er en anden type forespørgsel DSL, der bruges til at matche eller søge i de givne data såsom streng, tal eller tekst. Det er en ' fuld tekst ” baseret forespørgsel og udfører en fuldtekstsøgning og returnerer de resultater, der nøjagtigt matcher det søgte udtryk. Hvis termen ikke matcher søgetermen, vil den returnere en null-streng eller falsk.



Forskel mellem 'fuzzy' og 'match' forespørgsel

Begge ' sløret ' og ' match ”-forespørgsler bruges til søgeformål. Den vigtigste forskel mellem disse to forespørgsler er, at den 'fuzzy' forespørgsel foretager en fuzzy søgning og returnerer et resultat, der ligner eller tæt på det søgte udtryk. I modsætning hertil returnerer 'match'-forespørgslen de resultater, der nøjagtigt matcher det søgte udtryk.



Følg nedenstående eksempler for bedre forståelse:





Eksempel 1: Fuzzy søgning ved hjælp af 'fuzzy' forespørgsel

Antag, at brugeren ønsker at finde det dokument, der har ' Betegnelse ' værdi som ' Forfatter ”. Lad os lave en søgning, der finder et tættere match. For at gøre det skal du bruge ' sløret ' forespørgsel for at søge i et dokument, der har en ' Betegnelse ' værdi lig med eller tættere på ' forfatter ”:

FÅ linuxhint / _Søg

{

'forespørgsel' : {

'fuzzy' : {

'Betegnelse' : 'forfatter'

}

}

}

Nedenstående output viser, at dokumentet med id ' 1 ' har en ' Betegnelse ' værdi tæt på ' forfatter ' søgte term:



Men hvis ovenstående eksempel anvendes af ' match ' forespørgsel, vil det sende en ' nul streng ”, da det returnerer det nøjagtige matchende udtryk.

Eksempel 2: Fuzzy søgning ved hjælp af 'Match'-forespørgsel

Lad os tage det samme eksempel og anvende ' match ' forespørgsel for at finde dokumentet med ' Betegnelse ' værdi som ' forfatter ”:

FÅ linuxhint / _Søg

{

'forespørgsel' : {

'match' : {

'Betegnelse' : 'forfatter'

}

}

}

Nedenstående output viser, at ' match ' forespørgsel finder ikke nærmere resultater og returnerer en ' nul ' streng:

Lad os ændre den søgte værdi fra ' forfatter ' til ' Forfatter ' og kør ' match '-forespørgsel som vist nedenfor:

FÅ linuxhint / _Søg

{

'forespørgsel' : {

'match' : {

'Betegnelse' : 'Forfatter'

}

}

}

Her kan du se ' match ' forespørgsel returnerer dokumentet med id ' 1 ”. Fordi dokument 1 nøjagtigt matcher de søgte termer:

Det handler om forskellen mellem en ' sløret ' forespørgsel og en ' match ' forespørgsel.

Konklusion

Det ' sløret ”-forespørgsel bruges til at lave en uklar søgning og returnerer de resultater, der matcher det søgte udtryk nøje. Imidlertid ' match ” forespørgsel understøtter ikke fuzzy søgning og returnerer de resultater, der nøjagtigt matcher det søgte udtryk. Denne blog har illustreret forskellen mellem fuzzy query og match query.