Gurney: (z
Grey Council)
Ok, s dovolením bych tuhle diskusi přenesl do exaktnějšího módu formální logiky, protože to je to co nakonec bude implementováno a myslím, že je potřeba si to vyjasnit přesně:
Klíče musí následovat nějakou logiku, která bude konzistentní a nednoduchá na pochopení a další použití. Zásadní je zvážit, v jakých instancích budou klíče používané a to jsou podle mě v zásadě dva případy:
1) budou v podobě klíčenek (klíčenka = množina klíčů) použité k definování "sekcí", což uděláme my a "předem" při rozkládání obsahu skrz Kostku.
2) budou v podobě jednotlivých klíčů použité k filtrování, což budou dělat uživatelé.
Otázka je, jaká logika bude v tom kterém případě používána.
V případě 1 to bude disjunktivní logika (parametr OR, neformální označení "nebo"): "A v B => C" kde C bude obsahovat všechna A i B), tj. budeme
skládat klíče k sobě podle toho co všechno budeme chtít dát do jedné skupiny.
- Pokud uděláme fiktivní sekci DnD kde budeme chtít mít všechna pravidla DnD, pak definujeme klíčenku (množinu) "sekce všech pravidel DnD" jako "2e v 3e v 4e v 5e" výsledkem čehož bude sekce, která shrne všechno z DnD.
- Pokud uděláme fiktivní sekci d20 systému, kde budeme chtít mít všechna d20, použijeme tutéž logiku, jen levou stranu věty (argumenty implikace) rozšíříme o např. "v d20system v SWSE"
V tomto případě je myslím zjevné, že je výhodné mít klíče definované jako vzájemně výlučné (tj. pokud jsou klíče obecné "d20system" a konkrétní "DnD5e", pak je "DnD5e" vyloučeno z "d20system"; souhrn d20system+DnD získáme klíčenkou "d20system v DnD5e"), protože to usnadní naší práci s věcí (budeme používat pouze "součty").
Pokud bys použil překrývací logiku (DnD5e by zároveň vždy bylo d20system), pak bys d20system bez DnD musel použít konjunktivní logiku (parametr AND, laicky "a zároveň") a definovat to jako (d20system ^ ¬DnD5e). V tu chvíli používáš druhý typ logiky (konjunkci) a ještě navíc negační parametr (¬), přičemž bys tím nedosáhl ničeho, co v případě výlučné logiky nedokážeme zařídit s jednoduchou disjunkcí - tj. je to složitější (možná i na implementaci, rozhodně na práci s tím), systém to učiní méně přehledným a nepřináší to žádnou výhodu.
V případě 2 bude ale uživatel nejspíš používat odlišný postup. Přijde k filtru a řekne "chci DnD5e". Zjistí, že dostal příliš mnoho výsledků (články mají více klíčů) a prohlásí "chci DnD 5e proDM" (zaškrtne druhý klíč). Zjistí, že to stále nestačí a prohlásí "chci DnD5e proDM a Přelad" (přidá třetí klíč).
V tomto případě uživatel intuitivně používá konjunktivní logiku ("DnD5e" - nestačí, příliš mnoho výsledků; "DnD5e ^ proDM" - stále příliš mnoho; "DnD5e ^ proDM ^ Překlad"). Přičemž v každém kroku (při každém přidání dalšího klíče) chce z hledání vyloučit vše, co neodpovídá jeho hledání.
Pokud použijeme výlučnou logiku klíčů, pak je situace snadná - uživatel prostě a jednoduše přidá další klíč, který jeho hledání
upřesní (odfiltruje všechny ostatní výsledky). Pokud uživatel zjistí, že nenachází to, co hledá, tak hledání
rozšíří (přihodí výsledky dalšího klíče). Důležité je, že jak upřesnění, tak rozšíření výsledků hledání probíhá úplně stejně - přidáním dalšího klíče do "logické věty" za použití
té samé logiky (konjunkce, AND, ^) a zakliknout 3-4 další klíče je minimální náročnost (pokud se teda stránka nebude refreshovat při každém jednom dalším klíči, což ale pokud vím Dukolm psal, že nebude)
Pokud použiješ překrývající logiku klíčů, tak má uživatel problém, protože některé klíče nebudou fungovat jako jednoznačné určení. Řekněme, že uživatel hledá překlad něčeho ze SWSE pro DMy. Přijde k filtru a zadá "d20 system". Vypadne mu mrtě výsledků s DnDčky. A teď udělá co? Přidá klíče proDM a Překlad. Vůbec si nepomohl, stále se topí v DnDčku. Jediné, co by mu pomohlo, je klíč SWSE, jenže tímhle způsobem se v klíčích brzo utopíme.
Další možnost by byla dát mu právo použít jinou, než konjunktivní logiku, jenže praxe říká, že valná většina lidí ve skutečnosti nedokáže pracovat s formálními operátory hledání (OR, AND, -, / atp. - pár lidí sotva zvládá "" a i to je pro jiné dost aby je považivali za "experty")
Pokud by uživatel hledal všechno pro d20, tak při výlučné logice si vystačí s tím, že zatrhne pár DnD klíčů navíc, což je easy a intuitivní a v neposlední řadě si tak vystačíme s méně klíči, protože obecné klíče budou užitečnější (povedou na konkrétní výsledky které nejsou tak rozsáhlé, aby se týkaly specifických klíčů)
Tj. jsem velmi silně přesvědčený, že pro obě hlavní instance užití a z nich vyplývající logiky a postupy práce (pro naší práci s klíčenkami pomocí disjunkce a pro práci uživatelů s filtry pomocí konjunkce) je značně výhodnější, aby každý klíč byl pokud možno výlučný ostatním - ostatně právě kvůli tomu
dáváme článkům více klíčů, protože práce s klíči prostě používá výlučný systém - když nebudeme mít výlučné klíče, tak můžeme z klíčů rovnou udělat strom kdy každá úroveň blíž kořenu "všechny články" bude zahrnovat všechny sobě podřazené a článkům pak můžeme dávat klíč jen jeden - což je překombinované, nesmyslné a ke zbláznění (a logika toho by byla maniakální na vytvoření)