Fetcher improvements to parse and follow outlinks up to a specified depth. The number of outlinks to follow can be decreased by depth using a divisor. This patch introduces three new configuration directives:
<description>(EXPERT)When fetcher.parse is true and this value is greater than 0 the fetcher will extract outlinks
and follow until the desired depth is reached. A value of 1 means all generated pages are fetched and their first degree
outlinks are fetched and parsed too. Be careful, this feature is in itself agnostic of the state of the CrawlDB and does not
know about already fetched pages. A setting larger than 2 will most likely fetch home pages twice in the same fetch cycle.
It is highly recommended to set db.ignore.external.links to true to restrict the outlink follower to URL's within the same
domain. When disabled (false) the feature is likely to follow duplicates even when depth=1.
A value of -1 of 0 disables this feature.
<description>(EXPERT)The number of outlinks to follow when fetcher.follow.outlinks.depth is enabled. Be careful, this can multiply
the total number of pages to fetch. This works with fetcher.follow.outlinks.depth.divisor, by default settings the followed outlinks
at depth 1 is 8, not 4.
<description>(EXPERT)The divisor of fetcher.follow.outlinks.num.links per fetcher.follow.outlinks.depth. This decreases the number
of outlinks to follow by increasing depth. The formula used is: outlinks = floor(divisor / depth * num.links). This prevents
exponential growth of the fetch list.
Please, do not use this unless you know what you're doing. This feature does not consider the state of the CrawlDB nor does it consider generator settings such as limiting the number of pages per (domain|host|ip) queue. It is not polite to use this feature with high settings as it can fetch many pages from the same domain including duplicates.
Also, this feature will not work if fetcher.parse is disabled. With parsing enabled you might want to consider not to store downloaded content.