Mi a különbség a fuzzy lekérdezés és a megfelelő lekérdezés között?

Mi A Kulonbseg A Fuzzy Lekerdezes Es A Megfelelo Lekerdezes Kozott



Az Elasticsearch egy jól ismert, ingyenes, nyílt forráskódú, elemző és elosztott keresőmotor és adatbázis, amelyet különféle típusú adatok kezelésére használnak. Ez tisztán egy NoSQL-adatbázis, és a tipikus SQL- és relációs adatbázisoktól eltérően működik. Az Elasticsearch lekérdezési DSL-t ((tartományspecifikus nyelv) és REST API-kat használ az adatok kezelésére és elemzésére. Az Elasticsearch-ben különböző típusú lekérdezések léteznek, például fuzzy lekérdezés, egyezési lekérdezés, helyettesítő karakteres lekérdezés, előtag lekérdezés és még sok más. Ezek a lekérdezések eltérően működnek egymástól.

Ez a bejegyzés bemutatja:

Mi az a „fuzzy” lekérdezés?

A ' elmosódott ' lekérdezés egy Query DSL, amely más műveleteket hajt végre, mint például a karakter megváltoztatása, a karakter beszúrása vagy a karakter eltávolítása a ' Levenshtein szerkesztési távolság ” távolságot. Általában megtalálja a különbséget a kifejezések között, és az eredményt egy olyan dokumentumban adja vissza, amely közelebb áll a keresett kifejezéshez, vagy csaknem hasonló ahhoz.







Mi az „egyezés” lekérdezés?

A ' mérkőzés ” lekérdezés a Query DSL egy másik típusa, amelyet az adott adatok (például karakterlánc, szám vagy szöveg) egyeztetésére vagy keresésére használnak. Ez egy ' teljes szöveg ” alapú lekérdezés, és teljes szöveges keresést hajt végre, és a keresett kifejezésnek pontosan megfelelő találatokat adja vissza. Ha a kifejezés nem egyezik a keresett kifejezéssel, akkor null karakterláncot vagy false értéket ad vissza.



A „fuzzy” és a „match” lekérdezés közötti különbség

Mindkét ' elmosódott ” és „ mérkőzés ” lekérdezések keresési célokra szolgálnak. A legfontosabb különbség e két lekérdezés között az, hogy a „fuzzy” lekérdezés fuzzy keresést végez, és olyan eredményt ad vissza, amely hasonló vagy közel áll a keresett kifejezéshez. Ezzel szemben a „match” lekérdezés azokat az eredményeket adja vissza, amelyek pontosan megfelelnek a keresett kifejezésnek.



A jobb megértés érdekében kövesse az alábbi példákat:





1. példa: Fuzzy keresés „fuzzy” lekérdezéssel

Tegyük fel, hogy a felhasználó meg akarja találni azt a dokumentumot, amely Kijelölés ' értéke ' Szerző ”. Végezzünk keresést, amely közelebbi egyezést talál. Ehhez használja a „ elmosódott ” lekérdezés olyan dokumentumban való kereséshez, amely Kijelölés ' érték egyenlő vagy közelebb van' szerző ”:

Szerezd be a linuxhint-et / _keresés

{

'lekérdezés' : {

'elmosódott' : {

'Kijelölés' : 'szerző'

}

}

}

Az alábbi kimenet azt mutatja, hogy a dokumentum azonosítója ' 1 ' van egy ' Kijelölés ' érték közel a ' szerző ” keresett kifejezés:



De ha a fenti példát a „ mérkőzés ' lekérdezést, akkor küld egy ' null karakterlánc ”, mivel a pontosan egyező kifejezést adja vissza.

2. példa: Fuzzy keresés „Match” lekérdezéssel

Vegyük ugyanezt a példát, és alkalmazzuk a „ mérkőzés ' lekérdezés, hogy megkeresse a '' Kijelölés ' értéke ' szerző ”:

Szerezd be a linuxhint-et / _keresés

{

'lekérdezés' : {

'mérkőzés' : {

'Kijelölés' : 'szerző'

}

}

}

Az alábbi kimenet azt mutatja, hogy a „ mérkőzés ' lekérdezés nem talál közelebbi eredményeket, és egy ' nulla ' húr:

Módosítsuk a keresett értéket a ' szerző ' nak nek ' Szerző ” és futtassa a „ mérkőzés ” lekérdezés az alábbiak szerint:

Szerezd be a linuxhint-et / _keresés

{

'lekérdezés' : {

'mérkőzés' : {

'Kijelölés' : 'Szerző'

}

}

}

Itt láthatja a „ mérkőzés ' lekérdezés az azonosítóval rendelkező dokumentumot adja vissza' 1 ”. Mivel az 1. dokumentum pontosan egyezik a keresett kifejezésekkel:

Ennyi a különbség a „ elmosódott ' lekérdezés és egy ' mérkőzés ' lekérdezés.

Következtetés

A ' elmosódott ” lekérdezés fuzzy keresést végez, és a keresett kifejezéssel szorosan megegyező eredményeket adja vissza. Azonban a ' mérkőzés ” lekérdezés nem támogatja a fuzzy keresést, és azokat az eredményeket adja vissza, amelyek pontosan megfelelnek a keresett kifejezésnek. Ez a blog bemutatja a különbséget a fuzzy lekérdezés és az egyezési lekérdezés között.