Přeskočit na hlavní obsah

Zadání vzdálenosti klíčových slov

operátor "~", operátor NEAR, operátor tilda

Jakub Sikora avatar
Autor: Jakub Sikora
Aktualizováno tento týden

Zadání vzdálenosti klíčových slov

Dotaz: Jak přesně vyhledává operátor vzdálenosti/blízkosti - "~" ?

Odpověď:

Operátor ~ v Elasticsearch může znamenat dvě různé věci, podle toho, kde ho použijete.


1) ~ u fráze v uvozovkách = blízkost slov (tzv. slop)

Pokud zadáte více slov v uvozovkách, např.:

  • "partners capital"~1

pak ~1 neznamená editační vzdálenost, ale tzv. slop – tedy kolik „posunů“ mezi slovy Elasticsearch dovolí.

Co to prakticky znamená:

  • ~0 → slova musí být hned vedle sebe ve stejném pořadí

  • ~1 → slova mohou být téměř vedle sebe, např. s jedním dalším slovem mezi nimi

Důležité:
Slop běžně neumožňuje snadno obrátit pořadí slov. Prohození pořadí (např. capital partners místo partners capital) obvykle vyžaduje vyšší hodnotu (často ~2).

Krátké příklady (fráze):

  • Dotaz: "partners capital"~0
    ✅ najde: partners capital
    ❌ nenajde: partners global capital
    ❌ nenajde: capital partners

  • Dotaz: "partners capital"~1
    ✅ najde: partners capital
    ✅ najde: partners global capital (1 slovo mezi)
    ❌ nenajde: capital partners

  • Dotaz: "partners capital"~2
    ✅ najde: partners capital
    ✅ najde: partners global capital
    ✅ typicky najde: capital partners (obrácené pořadí)


2) ~ u jednoho slova bez uvozovek = tolerování překlepů (tzv. fuzzy / editační vzdálenost)

Pokud použijete ~ u jednoho slova bez uvozovek, např.:

  • partner~1

pak jde o fuzzy vyhledávání a ~1 znamená editační vzdálenost (Levenshtein) – tedy toleranci překlepů.

Editační vzdálenost určuje, kolik úprav je potřeba k přeměně jednoho slova na druhé. Mezi typické úpravy patří:

  1. vložení znaku (insertion)

  2. smazání znaku (deletion)

  3. záměna znaku (substitution)

Krátké příklady (fuzzy):

  • Dotaz: partner~1
    ✅ může najít: partner, partners (záleží na analyzéru)
    ✅ může najít i překlep: parnter (1 chyba)
    ❌ typicky nenajde: partnership (příliš velký rozdíl)


Shrnutí

  • "víceslovná fráze"~Nblízkost slov (slop), nejde o překlepy

  • slovo~Ntolerance překlepů (fuzzy / Levenshtein)

  • Pokud potřebujete „dvě slova v libovolném pořadí, ale hned vedle sebe“, je potřeba dotaz řešit jinak (např. vyhledat obě pořadí frází).

Dostali jste odpověď na svou otázku?