Not exactly this, but close enough: https://memex.marginalia.nu/links/bookmarks.gmi
I've changed the crawler design a couple of times, but the principle for growing the set of sites to be crawled is to look for sites that are (in some sense) adjacent to domains that were found to be good.
https://search.marginalia.nu/site/www.thran.uk
https://search.marginalia.nu/site/wmw.thran.uk
Only this is possible as long as the index knows about the domain. Yours are, but if not, anyone can shoot me an email or something and I can poke them into the database.
The limitation for known domains is in place to avoid abuse.
2) Yes. Everything is in-house.
Do you build a word index by document and find documents that match all words in the query?)
Yeah. It's actually got three indices;
* One is a forward index with `document id -> document metadata`
* One is a priority term index with `term -> document id`.
* One is a full index with `term -> (document, term metadata)`
They're all based on static b-trees.
Internet arguably doesn't even have a size. You can construct a website that's like n.example.com/m which links to '(n+1).example.com/m' and 'n.example.com/(m+1)', for each m and n between 0 and 1e308.
Dunno about the others, but my crawler has a set depth it will crawl. It'll BFS for like 1000-10000 documents depending on some factors.
How do you discover relevant new domains?
It can rank websites even if they aren't indexed, based on who is linking to them.
Vanilla PageRank can't do this very well. Domains that aren't indexed don't have (known) outgoing links, in the periphery of the rank. There's a some tricks to get these to not mess up the algorithm completely, but they basically all rank poorly. That's even without considering all the well known tricks for manipulating vanilla pagerank. The modified version seems very robust with regards to both problems.
[1] https://memex.marginalia.nu/log/73-new-approach-to-ranking.g...