XOWA allows custom creation of wikis by either excluding words or including words. The system is based on the Dansguardian format: an open-source (GPLv2) system for filtering web-pages.
Phraselist files are located at
/xowa/bin/any/xowa/cfg/bldr/filter/wiki_name/dansguardian. For example, on a Windows system, a phraselist file for simple.wikipedia.org can be placed at
- Phraselist files can be placed in sub-directories for grouping purposes. For example, files can be placed at C:\xowa\bin\any\xowa\cfg\bldr\filter\simple.wikipedia.org\dansguardian\group1\phraselist1.txt and C:\xowa\bin\any\xowa\cfg\bldr\filter\simple.wikipedia.org\dansguardian\group2\phraselist2.txt
Phraselist files are plain text files with the following format:
- Each line is either a rule or a comment
Comments start with the hash sign: # . For example
# this is a comment
Each rule has one or more words enclosed in angle brackets (< >) and separated by commas. For example,
< earth >,< mars >
Each rule ends with a score also enclosed in angle brackets. For example,
Phraselists are applied during import. The following process occurs:
- The import starts for a wiki
- All phraselists for the wiki are loaded into memory.
Each article's wikitext is analyzed by the phraselists and generates a score.
- The article's "title" is not analyzed. Article titles generally have only one or two words, and are not useful for phraselist matching
- The html is not analyzed. Note that this would slow down the import process dramatically. For example, for English Wikipedia, wikitext would only slow down the process from 2 hours 40 minutes to 3 hours. HTML would slow it down to 70 hours.
The entire wikitext is scanned including:
- Html tags: <img some attributes/>
- Urls: https://upload.wikimedia.org
A rule is matched if any part of the wikitext contains the words in the ruletext.
For example, let's says we wanted to build up a phraselist that allowed us to build a wiki without any astronomy articles. We could use something like the following:
< planet ><50> < earth >,< planet ><30>
Now consider these short sample articles:
- An article with just the word "planet" would have a score of 50
- An article with the words "earth planet something" would have a score of 80; 50 for matching "planet" and 30 for matching "earth" and " planet "
- An article with just the word "earth" would have a score of 0. It needs to have the word "planet" to get a score of 30
Rules scores are multiplied based on occurrences.
- For example, if an article has the text "planet planet planet" then its score would be 150, not 50, because it matches the "planet" rule 3 times
- Similarly "earth planet something earth planet something earth planet something" would have a score of 240 because it matches "earth planet" 3 times (90) and "planet" 3 times (150)
- However "earth planet something earth planet something earth" only has a score of 160 because it only matches the "earth planet" rule 2 times (60) and the planet rule 2 times (100)
By default, anything that matches a rule (has a score > 0) will be excluded. Note that this exclude number can be raised from 0 to something higher like 100. See Options/Import_Dansguardian
The import filter can also be used to build content-specific wikis. For example, let's say you wanted to build a wiki that only includes articles with the words "planet" and "earth planet". The following can be done:
- Use the same phraselists as above, but negate the numbers:
< planet ><-50> < earth >,< planet ><-30>
- Change the initial score from 0 to 50
- Leave the exclude score at 0
When running the import, the following will happen:
- An article that has the words "earth planet something" will have a score of -30: the initial score of 50 plus the rule score of -80. Because -30 is less than the exclude score of 0, it will not be excluded.
- An article that has the words "a b c" will still have its initial score of 50. Because 50 is greater than the exclude score of 0, it will be excluded
Manual inclusion / exclusion
The filter process also provides a way to list articles that will always be included / excluded, regardless of rule score.
For example, to always include the articles Earth and Sun, create the following text file:
Save it to
/xowa/bin/any/xowa/cfg/bldr/filter/wiki_name/xowa.title.exclude.txt XOWA will read this list and always exclude the article
Similarly, to manually include an article, save the file to /xowa/bin/any/xowa/cfg/bldr/filter/wiki_name/xowa.title.include.txt
- Note that a phraselist file can have many rules. The number of rules does not significantly slow down the runtime of the import-filter. For example, let's say Simple Wikipedia imports in 3 minutes with 100 rules. If there are 10,000 rules, the import should still take 3 minutes
- However, the number of rules will affect the amount of memory required by the computer. For example, 100 rules may take 1 MB. 10,000 rules may take 10 MB.