ceskaexpedice/kramerius

Pole 'licenses.facet' môže obsahovať duplicity

Opened this issue · 1 comments

Ahoj,

Solr pole licenses.facet môže obsahovať duplicitné licencie. Ak sa v poliach licenses_of_ancestors a licenses nachádza rovnaká licencia, tak sa zapíše do licenses.facet dva krát.

Licencie z tohto poľa vo veľkom využíva klient, a takéto duplicity potom vedú k situáciam kedy je počet dokumentov s nejakou liceniou vyšší ako celkový počet dokumentov vo výsledkoch vyhľadávania. V MZK je to viditeľné napríklad na zbierke EOD open, kde sa nachádza 614 dokumentov a z toho 1198 s public licenciou.

Ďakujem,

Róbert Randiak, MZK

To, že licenses.facet obsahuje nějakou licenci víckrát je sice chyba, ale není to příčina.

Vlastně tohle pole by mělo být řešením.

Klient teď používá původní 3 licenční pole

  • licenses - objekt má přímo přiřazené licence - tato jediná je i ve foxml
  • contains_licenses - licence potomků
  • licenses_of_ancestors - licence nadřazených objektů

Normálně by se nemělo stávat, že je stejná licence ve více z těchto polí, ale je to teoreticky možné a nic tomu nebrání.
Klient pak potřebuje zobrazit počty u licencí, což dělá přes facety a potřebuje k tomu všechna 3 pole, která pak vlastně sečte, takže pokud má jeden objekt stejnou licenci ve více polích, tak bude započítán víckrát.

Aby se tohle vyřešilo, tak se právě zavedlo pole licenses.facet, které je sjednocením těch 3 polí a klient pak facetuje pouze toto jedno pole. Jeden objekt tam nemůže být započítaný vícekrát.
Klient tohle pole ale ještě nepoužívá, protože aby se dal nahradit ten původní způsob tím novým polem, tak by muselo výt vše přeindexované.
Už je to nějaká doba, co se to přidalo, tak bychom to tam mohli přidat a podmínit to nějakým nastavení v konfiguraci.
A taky vyzkoušet tato dvě řešení vedle sebe.

Každopádně to duplikování licence v by se dít nemělo. @pavel-stastny koukni na to prosím, např.
https://api.kramerius.mzk.cz/search/api/client/v7.0/search?q=pid:%22uuid:e2f889b0-380e-11ed-aab1-005056827e51%22

...
"licenses_of_ancestors": [
  "public"
],
"licenses": [
  "public"
],
"licenses.facet": [
  "public",
  "public"
],
...