SLRN - Super Page
 

> Funkcje S-Lang w slrn > Pierwsze kroki > O SSL > O makrach > Wielu użytkowników > score >
poziom wyżej

slrn score (punktacja artykułów w slrn)

...

Ostatnia zmiana: pnd, 25 mar 2002, 15:32:27


Dokument zawiera informacje na temat sposobu punktowania artykułów w slrn

Spis treści

  1. Podstawy
  2. Format pliku punktacji
  3. Przykładowy plik punktacji
  4. Grupowanie reguł punktacji

1. Podstawy

Slrn przyznaje artykułowi określoną punktację. Jeśli punktacja artykułu jest mniejsza od zera, artykuł jest oznaczany jako przeczytany lub zabity. Celem pliku punktacji jest określenie zestawu testów, które artykuł musi przejść aby wyznaczyć jego punktację.

Chociaż punktacja może bazować na DOWOLNYM nagłówku, zalecane jest wykorzystanie jednego z nagłówków znajdujących się w bazie overview serwera news (slrnpull i tak pobiera wszystkie nagłówki, więc to nie ma żadnego znaczenia w jego przypadku). Zazwyczaj są to nagłówki:

  • Subject
  • From
  • Date
  • Message-Id
  • References
  • Bytes
  • Lines

oraz inne nagłówki, które zdecydował się tam umieścić tam administrator serwera grup dyskusyjnych (często jednym z nich jest nagłówek Xref). Istnieją również dwa dodatkowe znaczniki umożliwiające efektywniejszą punktację:

  • Newsgroup -- grupa dyskusyjna, której dany artykuł jest częscią
  • Age -- wiek artykułu w dniach.

2. Format pliku punktacji

Format pliku jest bardzo prosty (spójrz na poniższy przykład). Plik jest podzielony na sekcje ograniczone nazwą grupy lub grup umieszczonych w nawiasach kwadratowych, np.

     [rec.crafts.*, rec.hobbies.*]
 
Nazwa może zawierać globalny znak zastępczy *. Komentarze rozpoczynają się znakiem %. Początkowe spacje są ignorowane.

Każda sekcja zawiera linie z komentarzami, puste linie lub linie ze znacznikami. Tylko linie zawierające znaczniki są istotne, a wszystkie początkowe spacje są pomijane. Linia ze znacznikiem rozpoczyna się nazwą znacznika i następującymi po nim jednym lub dwoma dwukropkami oraz pojedynczą spacją. Pozostała część linii zazwyczaj zawiera wyrażenie regularne. Znacznik może być poprzedzony znakiem ~ w celu zaznaczenia, że wyrażenie regularne powinno być interpretowane jako zaprzeczenie.

Grupa znaczników wyznacza test, któremu poddawany jest nagłówek artykułu. Znacznik Score jest używany do przypisania określonej punktacji nagłówkowi. Jeśli po nim występuje pojedynczy dwukropek, to punktacja zostanie przyznana tylko wtedy, gdy wszystkie testy zakończą się pomyślnie (logiczne AND); dwa dwukropki oznaczają sumowanie punktacji, jeśli dowolny z testów zakończy się sukcesem (logiczne OR). Punktacja może być dodatnia lub ujemna. Jeśli wartość punktacji poprzedzona jest znakiem równości, to przetwarzanie punktacji zostaje wstrzymane i artykuł otrzymuje taką wartość jaka stała za znakiem równości.

Uwaga: Znacznik Score służy także do ograniczania testów. Możesz także umieścić za nim komentarz, który będzie wyswietlany w trybie artykułów, po wciśnięciu klawisza v. Oto przykład:

  Score: 100 % dowolny komentarz
 
Wszystkie znaczniki z wyjątkiem Score i Expires mogą być poprzedzone znakiem "~". Znacznik Expires, jeśli wystąpi, musi następować bezpośrednio po znaczniku Score. Znacznik Expires może zostać użyty do wskazania, który test nie powinien być wykonywany po upływie daty określonej przez znacznik. Na przykład:
  Expires: 4/1/1996              (albo: 1-4-1996)
 
wskazuje, że test nie będzie wykonywany po pierwszym kwietnia 1996r. Jak pokazuje przykład, data musi być zapisana w określonym formacie: MM/DD/YYYY lub DD-MM-YYYY. Uwaga: NIE NALEŻY MYLIĆ ZNACZNIKA EXPIRES Z NAGŁÓWKIEM ARTYKUŁU.

Znaczniki Lines, Bytes i Age są również wyjątkowe. Ich wartości nie są bowiem wyrażeniami regularnymi, lecz zwykłymi liczbami.

Znaczników Lines i Bytes można użyć do zabijania artykułów zawierających zbyt wiele lub zbyt mało linii/bajtów. Na przykład:

  Score: -100
  Bytes: 20480
 
przyznaje -100 punktów artykułom zawierającym ponad 20kB. Pamiętaj, że Bytes jest dostępny tylko podczas pobierania danych overview, a w pozostalych przypadkach (np. w slrnpull) jest równy 0.

Podobnie test:

  Score: -100
  ~Lines: 3
 
przyznaje punktację artykułom, które mają mniej niż 3 wiersze.

Znacznika Age można użyć do punktacji artykułów, które mają mniej niż N dni. Na przykład:

  Score: 10
  Age: 7
 
dodaje 10 punktów każdemu artykułowi, który ma mniej niż tydzień. Możesz użyć zaprzeczenia (~) do wypunktowania artykułów starszych niż N dni.

Do pliku punktacji mogą być dołączone zewnętrzne pliki z punktacją poprzez użycie dyrektywy include. Składnia jest prosta:

    include PLIK
 
Nazwa pliku jest względna w stosunku do katalogu, w którym znajduje się macierzysty plik punktacji. Np. jeśli plik /home/john/News/Score zawiera linie
  include /usr/local/share/slrn/score
  include score_spam
 
a plik /usr/local/share/slrn/score:
  include score_spam
 
to w pierwszym przypadku, score_spam będzie odczytany z katalogu /home/john/News, a w drugim z katalogu /usr/local/share/slrn.

3. Przykładowy plik punktacji

  [news.software.readers]
     Score: =1000
     % Wszystkie artykuły o slrn są potrzebne
     Subject: slrn

     Score: 1000
     % To jest gość, którego wiadomości chcę czytać
     From: davis@space\.mit\.edu

     Score: -9999
     Subject: \<f?agent\>

  [comp.os.linux.*]
     Score: -10
     Expires: 1/1/1996
     Subject: swap

     Score: 20
     Subject: SunOS

     Score: 50
     From: Linus

     % Zabij wszystkie artykuły przesyłane na grupę advocacy
     Score: -9999
     Xref: advocacy
     ~From: Linus

     % Tej osoby nie chcę znać, dopóki będzie pisać o "gizmos"
     % ale tylko na grupie comp.os.linux.development.*

     Score: -9999
     From: kogoś@bóg\.wie\.skąd
     ~Subject: gizmo
     ~Newsgroup: development

  [~misc.invest.*, misc.taxes]
     Score:: -9999
      Subject: Earn Money
      Subject: Earn \$
 

3.1 Omówienie przykładu

Ten plik zawiera dwie sekcje. Pierwsza z nich określa zestaw testów dotyczących grupy news.software.readers. Druga sekcja dotyczy grup comp.os.linux.*. Ostatnia sekcja dotyczy wszystkich grup z wyjątkiem misc.invest.* i misc.taxes (patrz niżej).

Pierwsza sekcja zawiera trzy testy. Pierwszy z nich przyznaje 1000 punktów każdemu tematowi zawierającego wyraz "slrn". Drugi test dotyczy pola From. Przyznaje on każdemu artykułowi od davis@space.mit.edu 1000 punktów. Trzeci test przyznaje -9999 punktów każdemu artykułowi, którego temat zawiera słowo "agent". Ponieważ testy są wykonywane w kolejności, to jeśli temat zawiera oba wyrażenia "slrn" i "agent", artykuł otrzyma 1000 punktów, ponieważ wartość poprzedzona jest znakiem równości.

Druga sekcja jest bardziej złożona. Dotyczy ona grup comp.os.linux i składa się z 5 testów. Pierwsze trzy są proste: artykuł otrzymuje -10 punktów jeśli jego temat zawiera "swap", 20 punktów jeśli zawiera "SunOS" i 50 jeśli artykuł pochodzi od kogoś nazywającego się "Linus"'. To oznacza, że jeśli Bill@Skądśtam napisze artykuł którego temat to "Swap, Swap, Swap", wtedy artykuł ten otrzyma -10 punktów. Jeśli jednak Linus napisze artykuł o tym samym temacie, otrzyma on -10 + 50 = 40 punktów. Informacja o pierwszym teście wygasa na początku 1996r.

Czwarty test zabija wszystkie artykuły, które są crosspostowane na grupę advocacy, CHYBA że wysłał je Linus. Informacja o tym, że znacznik rozpoczyna się znakiem "~", oznacza zaprzeczenie wyrażenia regularnego.

Piąty test filtruje wiadomości pochodzące od kogoś@bóg.wie.skąd dopóki będzie on pisał o "gizmos" na jednej z grup comp.os.development.

Jeszcze jedna informacja o znaku ~.

Ostatnia sekcja pliku punktacji zawiera linię:

[~ misc.invest.*, misc.taxes]

Jeśli pierwszy znak za kwadratowym nawiasem otwierającym to ~, wtedy grupa lub grupy dyskusyjne umieszczone między nawiasami są wyłączone z punktacji w tej sekcji. To znaczy, że znak ~ działa jak NOT w operacjach logicznych.

4. Grupowanie reguł punktacji

Do pisania bardziej skomplikowanych regułek slrn udostępnia grupowanie reguł punktacji. Oto prosty przykład:

  Score:: -1000
     ~Subject: \c[a-z]
     {:
       Subject: ^Re:
       ~Subject: ^Re:.*\c[a-z]
     }
 
Linie umieszczone w nawiasach klamrowych tworzą grupę; za pierwszym nawiasem znajdują się jeden lub dwa dwukropki, które określają czy tylko jedna ("::") czy też wszystkie (":") linie wewnątrz grupy muszą przejść dany test pozytywnie aby cała reguła została uznana jako spełniona.

Przykładowa regułka zabija artykuły o temacie nie zawierającym małych liter i nie posiadających początkowego "Re:".


projekt www: loop Piotr Gogolin
[ strona wygenerowana z CVS: 07.06.2002 20:25 ]