• Zásahy mají v položce "_score" číslo nazývané skóre zásahu.
  • Čím větší, tím lépe dokument vyhovuje dotazu.
  • Zásahy jsou uspořádané podle skóre sestupně.

Výpočet

  • Výpočet probíhá podle algoritmu BM25. BM = Best Matching.
  • Skóre dotazu obsahující tokeny na hodnotu zadané položky dokumentu je dáno výpočtem:
  • Základní hodnota je . Výchozí hodnota parametru (term saturation parameter) je . Základní hodnota je tedy
  • Hodnota je dána vzorcem:
  • Hodnota udává počet dokumentů obsahující v zadané položce term a hodnota celkový počet dokumentů s položkou.
  • Hodnota je dána vzorcem:
  • Zkratka znamená term frequency.
  • Hodnota udává počet výskytů termu v zadané položce dokumentu
  • je term saturation parameter
  • je length normalization parameter
  • je document length, udává počet termá v zadané položce dokumentu
  • je average document length a udává průměrný počet termů v zadané položce u všech dokumentů

Výpočet (lidsky)

  • Skóre zásahu se obvykle vypočítá na základě několika faktorů:

    1. Term Frequency (TF): Četnost termínu, tedy kolikrát se hledaný termín vyskytuje v poli dokumentu. Čím častěji se termín vyskytuje, tím je považován za relevantnější.
    2. Inverse Document Frequency (IDF): Tento faktor obráceně koreluje s počtem dokumentů ve kterých se termín vyskytuje. Pokud se termín vyskytuje v mnoha dokumentech, jeho význam pro určení relevance je menší.
    3. Field-Length Norm: Dokumenty s menším počtem slov v poli mohou získat vyšší skóre než delší dokumenty, protože se předpokládá, že pokud se hledaný termín vyskytuje v krátkém textu, je pravděpodobněji tématem celého dokumentu.
    4. Boosting: Určitá pole nebo termíny mohou být posíleny, tzn. výslovně jim může být přiděleno vyšší skóre, aby ovlivnily celkové skóre zásahu.
  • Výsledné skóre zásahu pro každý dokument je potom využito pro řazení výsledků hledání. Dokumenty s vyšším skóre zásahu jsou považovány za relevantnější pro daný dotaz a jsou umístěny výše ve výsledcích vyhledávání.

explain

  • Podrobnosti o výpočtu skóre lze získat přidáním položky "explain" s hodnotou true k dotazu
{  
	"query": query, 
	"explain": true
}

Například:

GET /book/_search
{
  "query": {
    "match": {
      "title": {
        "query": "fellowship ring hobbit"
		}
	}
},
  "explain": true
}

Předchozí: Elasticsearch - rozdělení textu na termy a základní dotazy Následující: Levenštajnova vzdálenost Celý okruh: 2. Informační technologie