Jaký je rozdíl mezi fuzzy dotazem a shodným dotazem?

Jaky Je Rozdil Mezi Fuzzy Dotazem A Shodnym Dotazem



Elasticsearch je známý, bezplatný, open-source, analytický a distribuovaný vyhledávač a databáze, která se používá ke správě různých typů dat. Je to čistě NoSQL databáze a funguje odlišně od typických SQL a relačních databází. Elasticsearch používá ke správě a analýze dat dotaz DSL ((Domain Specific Language) a REST API. V Elasticsearch existují různé typy dotazů, jako je fuzzy dotaz, dotaz na shodu, dotaz se zástupným znakem, dotaz na předponu a mnoho dalších. Tyto dotazy fungují odlišně od sebe navzájem.

Tento příspěvek ukazuje na:

Co je to „fuzzy“ dotaz?

' neostrý “ dotaz je dotaz DSL, který provádí vyhledávání dalších operací, jako je změna znaku, vložení znaku nebo odstranění znaku na základě “ Levenshtein upravit vzdálenost ' vzdálenost. Obvykle najde rozdíl mezi výrazy a vrátí výsledek v dokumentu, který je bližší nebo téměř podobný hledanému výrazu.







Co je to „shoda“ dotaz?

' zápas ” dotaz je další typ dotazu DSL, který se používá ke shodě nebo vyhledávání daných dat, jako je řetězec, číslo nebo text. Jedná se o „ celý text ” dotaz a provede fulltextové vyhledávání a vrátí výsledky, které přesně odpovídají hledanému výrazu. Pokud se výraz neshoduje s hledaným výrazem, vrátí řetězec null nebo false.



Rozdíl mezi „fuzzy“ a „match“ dotazem

Oba ' neostrý ' a ' zápas “ dotazy se používají pro účely vyhledávání. Klíčový rozdíl mezi těmito dvěma dotazy je v tom, že „fuzzy“ dotaz vytváří fuzzy vyhledávání a vrací výsledek, který je podobný nebo blízký hledanému výrazu. Naproti tomu dotaz „shoda“ vrátí výsledky, které přesně odpovídají hledanému výrazu.



Pro lepší pochopení postupujte podle níže uvedených příkladů:





Příklad 1: Fuzzy vyhledávání pomocí „fuzzy“ dotazu

Předpokládejme, že uživatel chce najít dokument, který má „ Označení “hodnota jako “ Autor “. Proveďte vyhledávání, které najde bližší shodu. K tomu použijte „ neostrý ” dotaz pro vyhledání dokumentu, který má “ Označení “hodnota rovná nebo bližší k “ autor “:

ZÍSKEJTE linuxhint / _Vyhledávání

{

'dotaz' : {

'fuzzy' : {

'Označení' : 'autor'

}

}

}

Níže uvedený výstup ukazuje, že dokument s id „ 1 ' má ' Označení “hodnota blízká “ autor ” hledaný výraz:



Ale pokud je výše uvedený příklad aplikován „ zápas “, odešle “ nulový řetězec ” protože vrací přesně odpovídající výraz.

Příklad 2: Fuzzy vyhledávání pomocí dotazu „Match“.

Vezměme stejný příklad a použijeme „ zápas ” dotaz k nalezení dokumentu, který má “ Označení “hodnota jako “ autor “:

ZÍSKEJTE linuxhint / _Vyhledávání

{

'dotaz' : {

'zápas' : {

'Označení' : 'autor'

}

}

}

Níže uvedený výstup ukazuje, že „ zápas “ dotaz nenajde bližší výsledky a vrátí “ nula ' tětiva:

Upravme hledanou hodnotu z ' autor “ až “ Autor “ a spusťte „ zápas “ dotaz, jak je uvedeno níže:

ZÍSKEJTE linuxhint / _Vyhledávání

{

'dotaz' : {

'zápas' : {

'Označení' : 'Autor'

}

}

}

Zde můžete vidět „ zápas “ dotaz vrátí dokument s id “ 1 “. Protože dokument 1 přesně odpovídá hledaným výrazům:

To je vše o rozdílu mezi „ neostrý “ dotaz a “ zápas “ dotaz.

Závěr

' neostrý ” dotaz se používá k fuzzy vyhledávání a vrací výsledky, které se těsně shodují s hledaným výrazem. Nicméně, „ zápas ” dotaz nepodporuje fuzzy vyhledávání a vrací výsledky, které přesně odpovídají hledanému výrazu. Tento blog ilustroval rozdíl mezi fuzzy dotazem a vyhledávacím dotazem.