home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 April / PCWorld_2001-04_cd.bin / Software / TemaCD / xnews / scoring.txt < prev    next >
Text File  |  1999-12-31  |  6KB  |  145 lines

  1. Intro to Xnews' score file.
  2.  
  3. Xnews happily steals the scoring system concept from slrn.  Basically, each article is assigned a score from -9999 to 9999.  By default, an article has score 0 (no score, or neutral).  Articles with score of -9999 or less are killed (you'll never see them, unless you turn off hard kill, in which case they show up with a red X icon).  Articles with score of 9999 or more are considered "important" and flagged with a yellow ! icon.  
  4.  
  5. Xnews scores articles using rules you specify in the score file score.ini.  This file is a plain text file which you can edit with any text editor (Notepad will do). Spaces, tabs, and blank lines are ignored except in keywords and regular expressions.  The score file consists of sections (like ini files).  Each section begins with a section header
  6.  
  7.     [group-regular-expression]
  8.  
  9. that is, a regular expression surrounded by [ ]  The header indicates which groups this section applies to.  For example,
  10.  
  11.     [.]
  12.  
  13. indicates this section applies to all groups.
  14.  
  15.     [^alt\.binaries]
  16.  
  17. indicates this section applies to all groups starting with 'alt.binaries'
  18.  
  19.     [babylon|trek]
  20.  
  21. indicates this section applies to all groups containing the word 'babylon' or 'trek'.
  22.  
  23. If group-regular-expression is preceded with a tilde (~), then the meaning is inverted.  For example, [~babylon|trek] applies to all groups that do NOT contain either 'babylon' or 'trek'
  24.  
  25. Within each group, you have one or more scoring rules.  Each rule begins like so:
  26.  
  27.     Score: number
  28.  
  29. that is, the keyword 'Score', followed by ':', followed by one or more spaces, then an integer from -9999 to 9999.
  30.  
  31. You define each rule by specifying one or more of these headers.and the expression to match, like so
  32.  
  33.     keyword: expression-to-match
  34.  
  35. where keyword is one of: 
  36.  
  37.     Message-ID, Subject, From, Xref, Lines, References
  38.  
  39. Here's an example:
  40.  
  41.  
  42. [.]
  43.     Score: -9999
  44.     Subject: \$\$\$+
  45.  
  46.     Score: 9999
  47.     From: luu.*tran
  48.  
  49. The two rules above apply to all groups.  The first assigns a score of -9999 (i.e., kills) any article which has three or more consecutive $ in the subject.  The second marks as important any article whose author is yours truly (ah, ego runs amok!).
  50.  
  51. If you precede keyword with a ~, then the meaning is inverted.  so
  52.  
  53.     Score: -1000
  54.     ~Subject: mulder|sculley
  55.  
  56. subtract 1000 from the score any article that does NOT mention mulder or sculley in the subject.
  57.  
  58. When the keyword is Lines, then the expression-to-match is an integer specifying the minimum number of lines.  For example,
  59.  
  60.     [~binaries]
  61.         Score: -9999
  62.         Lines: 1000
  63.         ~Subject: faq|rfd|rfc
  64.  
  65. kills any article appearing outside a binaries group with more than 1000 lines AND is not a FAQ, RFC, or RFD.
  66.  
  67.     On the other hand
  68.  
  69.     [binaries]
  70.         Score: -9999
  71.         ~Lines: 50
  72.  
  73. kills any article in a binaries group with 50 or fewer lines.
  74.  
  75. By the way, I'm only indenting these lines to make it more readable; it makes no difference otherwise.  The only important thing is each of the lines above must appear on a single line by itself.  Also, you can add comments by putting a  percent sign (%) at the beginning of the line.
  76.  
  77. By default, each individual test must pass in order for the scoring rule to apply, i.e., boolean AND is the default.  If you want to use boolean OR instead, add an extra : after the Score keyword.  For example,
  78.  
  79.     [^comp\.]
  80.         Score:: -9999
  81.         Lines: 1000
  82.         Xref: advocacy
  83.         From: beavis
  84.         From: butthead
  85.         
  86.  
  87. kills any article posted in a comp group which has more than 1000 lines, or is crospposted to advocacy, or is from beavis or butthead.
  88.  
  89. Note that all keywords are case insensitive.  So too are all regular expressions, so you don't need to write [Ff][Oo][Oo], just foo will do. If you want the  expression-to-match to be case sensitive, then put an equal sign instead of of a : after the keyword, e.g.
  90.  
  91.  
  92.     [.]
  93.         Score: -9999
  94.         ~Subject= .*[a-z]
  95.  
  96. kills anything that does not contain at least one lower case letter in the subject.
  97.  
  98. Sections and rules within each session are applied in the order that they aappear in the score file.  Each article starts out with a score of zero, then for each rule that it passes, its score is incremented or decremented by the rule's score value except when the rule's score value is -9999 or 9999, in which case the program assigns that score and stops any further testing.  If you want to assign a single score other than 9999 or -9999, then put an equal sign in front of the score value.  For example
  99.  
  100.     Score: =500
  101.     From: joey
  102.  
  103. means "if an article was posted by joey, then assign it a score of 500 and don't bother looking at any other rule."
  104.  
  105. You can add an expiration date to each rule, after which time the rule will no longer fires.  The format is
  106.  
  107.     Expires: date
  108.  
  109. The line, if present, must appear immediately after a Score: line.  For example
  110.  
  111.     % this rule expires at the end of the millenium
  112.     % (okay, the year 1999 anyway :)
  113.  
  114.     Score: 2000
  115.     Expires: 12/31/1999
  116.     ....
  117.  
  118. The date format is locale-dependent.  It's mm/dd/yyyy for those in the US and dd/mm/yyyy for those in the UK and elsewhere.
  119.  
  120. If you have an empty section, then scoring for groups matching that section will halt at that point.  For example, if you want to apply some scores to binaries group, but not discussion binaries group, you can do this
  121.  
  122. [binaries.*\.d$]
  123. % this section is left intentionally empty.  It prevents the scores below from 
  124. % being applied to binaries groups ending in .d
  125.  
  126. [binaries]
  127.     Score: 2000
  128.     ......
  129.  
  130. Xnews' score file format is very similar to slrn's, with (at least) these differences: 1) regular expressions are case insensitive in Xnews; 2) slrn treats section headers as wildcard expressions while xnews treats them as full regular expressions; 3) Xnews does NOT allow scoring on any header other than those mentioned, namely, Message-ID, From, Subject, XRef, Lines, and References;  and 4) as far as I know, slrn doesn't use the empty section as a mean to stop evaluation.
  131.  
  132. You can read an intro to slrn score file at
  133.  
  134.     http://kwaziwai.cc.columbia.edu/acis/tutor/slrnscore-txt.html
  135.  
  136. There's also a slrn score file FAQ at
  137.  
  138.     http://kwaziwai.cc.columbia.edu/acis/tutor/slrnscorefile-faq.html
  139.  
  140. You can incorporate ideas in the FAQ to make your own score file, taking into account the differences stated above.
  141.  
  142.  
  143. Luu Tran
  144. Feb 23, 1999
  145.