Provided by: manpages-hu_4.21.0-2_all bug

NÉV

       procmailsc - a procmail súlyozott pontozási módszere

ÖSSZEGZÉS

       [*] w^x feltétel

LEÍRÁS

       A  szűrési feltételekben megadott hagyományos igaz/hamis vizsgálat mellett a súlyozott pontozási módszert
       is lehet használni a feltételek helyességének megállapítására. A szűrési feltételben  használt  pontozási
       módszereknél a pozitív értékek az igaz állításnak felelnek meg.

       A  feltételek  az  alábbi  módon  kapnak  pontokat,  `fontosság'  (w)  és `kitevő' (x).  A feltétel előtt
       (ugyanabban a sorban) lehet megadni ezt a következőképen:
              w^x
       Whereas both w and x are real numbers between -2147483647.0 and 2147483647.0 inclusive.

Súlyozás egyszerű feltételnél

       A feltétlenek való első megfeleléskor w -vel nő a  pontszám.  A  következő  megfeleléskor  már  w*x  -el.
       Harmadik találat esetén w*x*x -el. Negyedik megfeleléskor w*x*x*x -el. És így tovább.

       Ezt a következő képlettel lehet kifejezni:

                                   n
                   n   k-1        x - 1
              w * Sum x    = w * -------
                  k=1             x - 1

       A képlet megadja a feltétel n számú megfelelésekor az összpontszámot.

       A következő eseteket lehet x -től függően megkülönböztetni:

       x=0     Csak  az  első találat esetén növekszik a pontszám w-vel. Minden más találat figyelmen kívül lesz
               hagyva.

       x=1     Minden egyes találat w-vel növeli a pontszámot. Az  összpontszám  a  találatok  számával  egyenes
               arányban növekszik.

       0<x<1   Minden  újabb  találattal  kevesebb  pontot  adunk  az  összpontszámhoz,  mint  előtte.  Ekkor az
               összpontszám egyoldalról (aszimptotikusan) közelít  egy  határértékhez.  (Lásd  MEGJEGYZÉS  részt
               később).

       1<x     Minden  újabb  találattal  egyre  több  pontot  adunk az összeghez, mint előtte.  Az összpontszám
               exponenciálisan növekszik.

       x<0     Segítségével megkülönböztethetjük az egész- vagy páratlan számú találatokat.

       Ha a feltételnek való megfelelést megfordítjuk [negáljuk] (pl. találat, ha nincs egyezés a  feltétellel),
       akkor az n értéke természetesen nulla vagy egy lehet.

Súlyozott kilépésiértékek

       Ha  a  program  EXIT_SUCCESS  (=0)  -vel  fejezi be működését, akkor az összpontszám w lesz.  Bármely más
       kilépési kód (hibás működés) esetén az összpontszám x lesz.

       A program kilépési kódjának  megfordításakor  (negálásakor)  kapott  pontszámot  a  lehetséges  találatok
       számával  ('virtual  number  of  matches')  azonosítja  a  program.  Az összpontszám kiszámítása ugyanúgy
       történik, mint ahogy hagyományos kifejezéssel való egyezéskor történne, vagyis mintha n=`exitcode'  számú
       találat lett volna.

Súlyozás levélméret alapján

       Ha a levél mérete M akkor:

              * w^x > L

       esetén a megfelelő pontszám a következőképen számolható:

                         x
                  /  M  \
              w * | --- |
                  \  L  /

       És:

              * w^x < L

       esetén a megfelelő pontszám a következőképen számolható:

                         x
                  /  L  \
              w * | --- |
                  \  M  /

       Mindkét  esetben,  ha  L=M,  akkor  az  összpontszámhoz  csupán w adódik. Az előző példa azonban hosszabb
       levelekre, míg az utóbbi a rövidebb levelekre használandó. Az x változtatásával  a  függvény  pontosságát
       lehet 'finomhangolni', de az x=1 többnyire megfelelő.

EGYÉB

       A  szűrési  feltételben  (recipe)  szereplő  összes pontszámot a $= környezeti változó segítségével lehet
       kiolvasni.  Ezt a változó minden szűrés után ellenőrzésre kerül (még ha a szűrés nem is hajtódik végre).

PÉLDÁK

       A következő példával minden  a  olyan  levelet  töröltethetünk,  amely  a  törzsében  150  sornál  többet
       tartalmaz.   Az  első  sorban egy üres feltétel talalható, amely minden levélre igaz, ezzel a pontszámnak
       egy kezdeti (negatív) értéket adtunk meg.  A következő feltétel segítségével minden egyes új  sor  esetén
       növeltetjük  az  összpontszámot (soronként egy ponttal). A feltétel pozitív pontszámmal zárul, ha a levél
       150 sornál többet tartalmazott.

              :0 Bh * -150^0 * 1^1 ^.*$ /dev/null

       Ha van egy  külön  levelesmappánk,  amelyet  mindig  először  olvasunk  el,  akkor  a  következő  szűrési
       feltétellel a fontosabb leveleket átirányíthatjuk ebbe a mappába. Az első feltétel nem használ pontozást,
       mindössze  figyeli,  hogy  a  levelek  nem tartalmazzák-e a megadott feltételeket. A következő feltételek
       pedig a következőt fejezik ki: józsi és kati általában hasznos dolgokról írnak; a megbeszélésekről  szóló
       levelek  fontosak  a  számunkra;  válaszleveleket  is szívesen olvasunk; Elvis-ről szóló leveleket (hátha
       megtudunk valami újat) mindig elolvassuk (minél többször említik a levélben Elvist, annál több pontot kap
       a levél, de maximum 4000 pontot); túl sok idézett sort  tartalmazó  levelet  el  szeretnénk  kerülni;  ha
       smiley-t  küldenek  nekünk, akkor azt szívesen megnézzük (erre maximum 3500 pontot adunk); három embertől
       (főnők, timi, péter) általában unalmas  leveleket  szoktunk  kapni;  és  végül  nem  szeretjük  a  hosszú
       leveleket,  jobb,  ha a levél csak 2000 bájt hosszú, ha ennél hosszabb, akkor 100 pontot, ha 4000 bájtnál
       hosszabb akkor pedig 800 pontot vonunk le az  összes  pontszámából.   A  pontozási  módszer  segítségével
       azonban,  még  ha  egy  unalmas  levelet is kapunk három emberünk valamelyikétől a levél még bekerülhet a
       külön mappánkba, ha pl. megbeszélésről szól, vagy tartalmaz legalább 2 darab smileyt.

              :0 HB * !^Precedence:.*(junk|bulk)  * 2000^0
              ^From:.*(jozsi@otthon|kati@munkahely)  * 2000^0 ^Subject:.*megbeszeles *
              300^0 ^Subject:.*Re: * 1000^.75 elvis|presley * -100^1 ^> * 350^.9 :-\)
              * -500^0 ^From:.*(fonok|timi|peter)@munkahely * -100^3 > 2000
              kulon_mappa

       Ha a levelezőlistákról érkező levelek közül csak  a  hasznos  leveleket  szeretnénk  elolvasni,  akkor  a
       következő  szűrési  feltételt  használhatjuk.   Az  első  feltétel  ellenőrzi,  hogy  a  levél a megadott
       levelezőlistáról jött-e. Aztán a leveleket ellenőrizzük, hogy olyan  személytől  jött-e  akinek  adunk  a
       szavára,  vagy  olyan  témáról  szól,  amelyről mindent El szeretnénk olvasni. Ha ezeknek megfelel, akkor
       marad a levél.  A többi levélnél megvizsgáljuk, hogy  az  idézett  és  az  új  sorok  aránya  eléri-e  az
       1:2-hözt.  Ha ennél több, akkor töröljük a levelet. Minden olyan levél, amely átment az előző vizsgálaton
       mentésre kerül.

              :0
              ^From levelezőlista@vhol
              {
                :0:
                * ^(From:.*(piroska|bandi)|Subject:.*sieles)
                levlista

                :0 Bh
                *  20^1 ^>
                * -10^1 ^[^>]
                /dev/null

                :0:
                levlista
              }

       További mintapéldák a procmailex(5)  súgóban lehet találni.

FIGYELMEZTETÉS

       A procmail a gyors keresés érdekében mindig csak a balelső (leftmost)  legrövidebb  egyezésig  keres,  ha
       csak  nem a MATCH -be értéket kell átadni, ebben az esetben a balelso leghosszabb találatig keres.  Pl. A
       balelső legrövidebb találat a következő kifejezésre:

       .*     mindig nullahosszúságú találatot eredményez.

       .+     pedig mindig csak egy karaktert (sortörést persze nem) eredményez.

LÁSD MÉG

       procmail(1), procmailrc(5), procmailex(5), sh(1), csh(1), egrep(1), grep(1),

HIBÁK

       Ha az x értéke túlcsorduláshoz vezet, akkor a matematikai függvénytárban lévő pow(3)  függvénytől függ  a
       végső eredmény.

       Lebegő pontos számok mérnöki formátumban (pl. 12e5) nem adhatók meg.

EGYÉB

       A `pozitív végtelen' (2147483647) elérésekor minden további súlyozás át lesz ugorva.

       A `negatív végtelen' (-2147483647) elérésekor a szűrés megfelelés hiányában befejeződik.

MEGJEGYZÉS

       0<x<1 esetén a hagyományos feltétel pontszáma a következő számhoz közelít egyoldalról:

                 w
              -------
               1 - x

       A maximális érték felének eléréséhez

                   - ln 2
              n = --------
                     ln x

       számú találatra van szükség.

SZERZŐI

       Stephen R. van den Berg
              <srb@cuci.nl>

FORDÍTÁS

       A kézikönyv magyar fordítását a Vizi Szilárd <vizisz@freemail.hu> készítette.

       Ez  a  fordítás  ingyenes  dokumentáció;  lásd  a  GNU General Public License 3.  Feltételezzük, hogy NEM
       FELELŐSSÉG.

       Ha hibát talál a kézikönyv oldal fordításában, küldje el a e-mail cím: TODO..

                                                     BuGless                                       PROCMAILSC(5)