search engine: first draft of code and also (slightly desynchronized) chapter text!

That's a good point. The term "skip" comes from Lucene, which also does not use skip lists for its disk files, although even the Lucene source asserts that it does. I have sometimes called this structure the "headwords" file in the past, but I thought it would be better to use "skip" so that people who go on to study Lucene don't need to translate terminology.

The two structures are not totally unrelated. The separate files this engine writes (the chunk files and the skip files) correspond to the blocks of a perfectly balanced two-level B-tree, and it's easy to see how to extend this into an N-level B-tree with skip files divided into chunks of their own. A skip list is just a B-tree sliced sideways: in a B-tree, the relationships between keys inside the same block are expressed by physical proximity, while the relationships between levels of the search tree are expressed with pointers, while a skip list is exactly the opposite. Skip lists as originally proposed use a stochastic algorithm to figure out which level to put each key on, while B-trees traditionally use hard high- and low-water-mark limits on node size, but you can relatively easily do these the other way around, too.