Gramps 5.1 Wiki Manual - Filters/sk

From Gramps
Revision as of 13:16, 9 November 2021 by Milan (talk | contribs) (Pozri tiež)
Jump to: navigation, search
Predchádzajúca Index Nasledujúca


Fig. 16.1 Definujte filter - dialógové okno - predvolené

Zoznamy všetkých pravidiel filtrovania aktuálne definovaných v programe Gramps. Každé z týchto pravidiel je k dispozícii na použitie pri vytváraní vlastných filtrov.

Pravidlá sú uvedené podľa ich kategórie.

Filter vs. vyhľadávanie

V programe Gramps môžete údaje vyhľadávať dvoma spôsobmi: Vyhľadávanie a Filter. Vyhľadávanie používa Search Bar nad zobrazením zoznamu (napríklad Ľudia, Rodiny atď.). Filter sa môže používať v kombinácii s funkciou Vyhľadávanie alebo samostatne v bočnom/spodnom paneli Gramplets. Search Bar sa zobrazí len vtedy, keď je celý bočný panel zatvorený. Lišty Grampletu môžete zobraziť alebo skryť zmenou výberu v ponukách Zobraziť ➡ ☑Bočný panel alebo Zobraziť ➡ ☑Bottombar.

Gramps-notes.png
Chovanie filtrovania podľa mena sa zmenilo pre Gramps 5.1

V predchádzajúcich verziách Gramps sa časť Filtrovanie podľa mena v Gramplete pokúšala o zhodu na ľubovoľnom jednom poli mena (meno, priezvisko, predlaktie atď.) všetkých mien (primárnych a alternatívnych), ale iba na poli na meno — nebolo možné porovnať pole meno a pole priezvisko v tom istom mene. Mohli ste priradiť priezvisko, ale súčasné priradenie priezviska a given v tom istom dotaze nebolo možné. Ak ste napríklad filtrovali na "John", získali by ste zhody osôb s menom "John", ale aj osôb s priezviskom "Johnson". Zložitejšie vyhľadávanie si vyžadovalo použitie možností porovnávania vzorov regulárnych výrazov alebo vlastných filtrov.

Toto obmedzenie bolo odstránené a súčasné vyhľadávanie viacerých výrazov je teraz predvoleným správaním.

Vyhľadávanie a filter fungujú úplne odlišne a je užitočné tieto rozdiely pochopiť:

  • Vyhľadávanie' - Search Bar prehľadáva databázu tak, ako sa zobrazuje v riadkoch a stĺpcoch na obrazovke. Funkciu Vyhľadávanie budete pravdepodobne chcieť používať najčastejšie, pretože je rýchla a najjednoduchšia. Rýchlosť a jednoduchosť si však vyžaduje určité obmedzenia (pozri nižšie).
Napríklad, ak máte v Nastaveniach nastavené Zobrazenie mena na zobrazenie "Priezvisko, Dané", potom môžete priradiť mená ako "Smith, J" a všetky správne riadky budú zodpovedať. Ak zmeníte spôsob zobrazovania mien (v Nastaveniach), potom môžete porovnať tento formát (napríklad "John Smith").
  • Filter' - Filtre používajú prepracovanejší systém. Neobmedzuje sa na to, čo vidíte na obrazovke, ale skúma skutočné údaje vo všetkých menných poliach, a nie len to, čo sa zobrazuje v zobrazení. Zadaním viacerých slov sa vykoná porovnávanie fráz pre väčšinu textových polí. Riadok filtru Názov je však oveľa výkonnejší. S každým slovom vo vyhľadávaní v poli Názov sa pracuje samostatne, ako keby išlo o čiastkové vyhľadávanie v záznamoch nájdených pomocou predchádzajúceho vyhľadávaného slova. A súčasne sa vyhľadáva all v poliach Názov.
napr. vyhľadávanie mena "geo r." v databáze príkladový strom nájde 5 osôb: s rôznym "Jr." a "Sr." ako príponou a "George's" ako krstným a stredným menom. Alebo vyhľadávanie "garn ski ph" nájde Phoebe Emily, ktorá má rodné priezvisko Zieliński a náhradné manželské priezvisko Garner.
Fig. 16.3 Bočný panel filtra Gramps pre zobrazenie Ľudia - Tag príklad pop-up menu

Filtre je možné vytvárať a ovládať z ponuky {Upraviť ➡ Filter Editor alebo zo špeciálneho bočného panela/spodného panela Gramplet. Gramplety filtrov umožňujú niektoré rýchle filtre, ktoré sú podobné Vyhľadávací panel, ale všetky Filtre sa riadia tu uvedeným rozlišovaním.

Niektoré ďalšie body:

  • Filter vyhľadáva aj alternatívne a viacnásobné mená; Search Bar hľadá len v primárnom mene... v tom, ktoré sa zobrazuje v zobrazení Ľudia. Preto sa pri filtrovaní na "Smith" môžu zobraziť ľudia, ktorí sa na prvý pohľad nezdajú byť zhodní. Ale ak sa vnoríte do podrobností o tejto osobe pomocou Upravovač_mená, môžete vidieť, že majú alternatívne meno obsahujúce "smith".
  • Filter umožňuje "regulárne výrazy". Takže môžete nájsť všetky mená, ktoré začínajú na "B" a končia na "ship": "B.*loď". Toto nemôžete urobiť pomocou Search Bar.
  • Vyhľadávanie bude zodpovedať len tomu, čo je viditeľné. Ak je názov alebo text príliš veľký na to, aby bol viditeľný vo výpise pod Vyhľadávací panel, potom ho nenájdete. Na to treba pamätať pri vyhľadávaní v Poznámkach. Najlepšie je používať Filter pre poznámky a iné dlhé textové polia.
  • Všetky Filtre predvolene používajú porovnávanie bez rozlišovania veľkých a malých písmen; "Ship" bude zodpovedať "ship", "SHIP" alebo "ShIp".

Pozri tiež


Regulárne výrazy

Regulárne výrazy(známe tiež ako regex, regexp alebo niekedy racionálny výraz) sú rýchlym a výkonným spôsobom, ako popísať text, ktorý zodpovedá vzoru. Program Gramps používa RegEx ako možnosť porovnávania vo filtroch.

Porovnávanie vzorov RegEx je pokročilá funkcia, ktorá je v predvolenom nastavení vypnutá. V prípade vlastných filtrov má každé jednotlivé pravidlo v dialógovom okne Upraviť pravidlo zaškrtávacie políčko Template:Zaškrtávacie políčko{značka človeka|Použiť regulárne výrazy}}. Gramplety filtrov majú tiež začiarkavacie políčka Template:Začiarkavacie políčko{značka človeka|Použiť regulárne výrazy}}, ktoré umožňujú, aby sa regexpové výrazy používali priamo na porovnávanie reťazcov v ich textových poliach.

Ak by ste napríklad hľadali priezvisko, ktoré sa začína na "B" a končí na "ship", potom by ste mohli na opis tohto vzoru použiť regulárne výrazy. Bolo by to ^B.*ship:

  • <kód>^B</kód> označuje text, ktorý sa začína písmenom B
  • <kód>.</kód> označuje akýkoľvek jednotlivý znak (písmeno, číslo alebo čokoľvek iné)
  • <kód>*</kód> označuje nula alebo viac predchádzajúcich znakov (v tomto prípade akýkoľvek jeden znak)
  • Znak ship zodpovedá presne písmenám s, h, i, p v tomto poradí.

Regulárne výrazy sú pomerne silné a existuje veľa možností. My používame systém regulárnych výrazov Python, ktorý tu budeme dokumentovať. Okrem toho môžete použiť ľubovoľný zdroj regulárnych výrazov Python.

Biele miesta - Termín "biele miesta" sa ďalej používa na označenie jedného alebo viacerých znakov, ktoré nevidíte. Medzi biele znaky patria napríklad tabulátory, medzery a nové riadky.

Existujú niektoré znaky, ktoré majú pri regulárnych výrazoch špeciálny význam. Sú to:

  • '<kód>. ^ $ * + ? { } [ ] \ | ( )

Môžu sa používať podľa opisu:

  • '.' zodpovedá akémukoľvek znaku (písmenu, číslu alebo inému)
  • "^" zodpovedá začiatku textu
  • "$" zodpovedá koncu textu
  • "*" zodpovedá nule alebo viacerým predchádzajúcim položkám
  • "+" zodpovedá jednej alebo viacerým predchádzajúcim položkám
  • "?" zodpovedá nule alebo jednej z predchádzajúcich položiek (je nepovinný)
  • '{' - definuje počet zhody
  • '}' - ukončí počet zhody
  • '[' - začiatok množiny
  • ']' - end of set
  • '\' - next character is special sequence
  • '|' - or
  • '(' - beginning of a group
  • ')' - ending of a group

Some of the special sequences beginning with '\' represent predefined sets of characters that are often useful, such as the set of digits, the set of letters, or the set of anything that isn't whitespace. The following predefined special sequences are a subset of those available.

  • \d Matches any decimal digit; this is equivalent to the class [0-9].
  • \D Matches any non-digit character; this is equivalent to the class [^0-9].
  • \s Matches any whitespace character; this is equivalent to the class [ \t\n\r\f\v].
  • \S Matches any non-whitespace character; this is equivalent to the class [^ \t\n\r\f\v].
  • \w Matches any alphanumeric character; this is equivalent to the class [a-zA-Z0-9_].
  • \W Matches any non-alphanumeric character; this is equivalent to the class [^a-zA-Z0-9_].

The most complicated repeated qualifier is {m,n}, where m and n are decimal integers. This qualifier means there must be at least m repetitions, and at most n.

Find all defined values or blanks

To find all values, (.|\s)* will match: any character or any whitespace character; and zero or more repetitions of those.

To find empty (blank or null) strings, ^.{0}$ looks from the start of the match ^ for any character (except newline) . occurring precisely zero times {0} before the end of the match $

Groups and Sets

Groups are marked by the '(', ')' metacharacters. '(' and ')' have much the same meaning as they do in mathematical expressions; they group together the expressions contained inside them, and you can repeat the contents of a group with a repeating qualifier, such as *, +, ?, or {m,n}. For example, (ab)* will match zero or more repetitions of ab.

Sets are marked by the '[' and ']' metacharacters.

Skupiny si môžete predstaviť ako zoznam alternatív oddelených metaznakom '|', kde každá alternatíva pozostáva z jedného, niekoľkých alebo nula znakov, a množiny ako zoznam alternatív, kde každá alternatíva predstavuje jeden znak.

Examples

  • ^B.*ship$ - matches all text that starts with a 'B', followed by anything, ending with 'ship'.
    • matches: Blankenship, Blueship, Beeship
    • does not match: Blankenships
  • ^B.*ship - matches all text that starts with a 'B', followed by anything, followed by 'ship' (could be followed by more).
    • matches: Blankenship, Blankenships, Blueship, Blueshipman, Beeship, Beeshipness
    • does not match: Blankenschips

Common variations of a surname

Example 1
Using the expression Eri(ch|ck|k|c)(ss|s)on the following are matched:
Erikson
Eriksson
Ericson
Ericsson
Erickson
Ericksson
Erichson
Erichsson

Explanation: Because of the following

  • Eri = Eri
  • (ch|ck|k|c) = group matching ch, ck, k or c. It tries to make the longest match first
  • (ss|s) = group matching ss or s. It tries to make the longest match first
  • on = on

Example 2
Using the expression Ba(in|yn|m|n)bri(dge|cke|g(g|e|)) the following are matched:
Bainbricke
Bainbridge
Bainbrig
Bainbrigg
Bambridge
Banbrig
Banbrige
Baynbrige

Vysvetlenie: Z dôvodu

  • <kód>Ba</kód> = Ba
  • (in|yn|m|n) = skupina zodpovedajúca in, yn, m alebo n. Najskôr sa pokúsi o najdlhšiu zhodu.
  • bri = bri
  • (dge|cke|g(g|e|)) = skupina zodpovedajúca dge, cke alebo (g s g, g s e alebo g s ničím)

Príklad 3
Pomocou výrazu n(es|oua|oai|o[iya]|a[iy])r(r|)(on|((e|)au(x|t|d|lt|))) sa porovnávajú nasledujúce výrazy:
nairaud
nairault
naireaud
nayrault
nesrau                
nesrault
nesreau
nesreaud
noirau
noiraud
noirauld
noirault
noiraut
noiraux
noireau
noireaud
noireault
noireaut
noirraux
noirreau
noirreaud
nouarault
noyraud
noyrault 

Vysvetlenie: Z nasledujúcich dôvodov

  • <kód>n</kód> = n
  • (es|oua|oai|set1|set2) = skupina zodpovedajúca es, oua, oai, set1 alebo set2
  • set1 je o[iya] = množina zodpovedajúca o AND i, y alebo a. Inými slovami oi, oy alebo oa
  • set2 je a[iy] = množina zodpovedajúca a AND i alebo y. Inými slovami ai alebo ay
  • r = r
  • (r|) = skupina zodpovedajúca r alebo nič
  • (on|(subgroup1) = skupina zodpovedajúca on alebo subgroup1.
  • subgroup1 je skupinová zhoda ('subgroup2 au subgroup3)
  • podskupina2 je (e|) = skupina zodpovedajúca e alebo nič
  • au = au
  • subgroup3 je (x|t|d|lt) = skupina, ktorá sa zhoduje s x, t, d alebo lt

Testovanie regulárnych výrazov

Tester regulárnych výrazov možno nájsť online prostredníctvom služby Google. https://www.regexr.com/ je jednoduchý a pohodlný

Gnome-important.png
Pozorovaný a opravený 'dialekt' regulárneho výrazu

V programe Gramps 5.1 filter bočného panela nevhodne vyhodnocoval parametre obsahujúce medzery... a pokúšal sa preinterpretovať jeden regulárny výraz ako postupnosť samostatných výrazov. V programe Gramps 5.1.1 je chyba 0011321 riešená doslovnejšie.