Docs & rules

instituutnederlandsetaal/BlackLabGitHub

This is a public, read-only report. Striff reads this repository's docs, turns each sentence that makes a claim about the code into a rule, and checks the rule against the code on the default branch. How this works

1 stale name in these docs.

dev0addd34Last read Oct 2

Is this yours? Install to manage it

Once installed, Striff checks every pull request.

Documents
Rules
32
21
21
1 stale name18
3
11
11
11
11
4
7
26 docs
instituutnederlandsetaal/BlackLabOpen repository

Stale names in these docs1

Each sentence below has a stale name: a type the default branch doesn't declare, or declares somewhere else. Edit the doc so it matches the code, or bring the type back.

  • GoneBLSpansWrapper
    BLSpansWrapper (always pass but it's a BLSpans now)

    The repository once had engine/src/main/java/nl/inl/blacklab/search/lucene/BLSpansWrapper.java. It doesn't now.

    View on GitHub

instituutnederlandsetaal/BlackLab — documented rules

32 of 32 rules, printed October 14, 2026.

The sentence in your docs
Read Oct 2
text-pattern could eventually become unnecessary as we move their functionality into the various SpanQuery classes, and could then be moved to contrib for legacy uses.
BlackLabEngine has searchExecutorService
Holds
Read Oct 2
BLSpanQuery adds an optimize method that is run first.
BLSpanQuery has an optimize method
Holds
Read Oct 2
optimize() is only implemented by SpanQuerySequence for now.
SpanQuerySequence has an optimize method
Holds
Read Oct 2
BlackLabEngine is the class that manages the BlackLab search threads. It has a searchExecutorService that search threads can be submitted to. The open and openForWriting methods can be used to open indexes.
2 rules from this sentence
BlackLabEngine has an open method
Holds
BlackLabEngine has an openForWriting method
Holds
Read Oct 2
BlackLabIndex represents a single opened index. You can use it to search the index directly using methods like find(BLSpanQuery), or you can construct a Search description using the search() methods and then either execute it synchronously using Search.execute() or go through the cache using Search.executeAsync().
2 rules from this sentence
BlackLabIndex has a find method
Holds
BlackLabIndex has a search method
Holds
Read Oct 2
SearchResult is the base interface that all types of results objects implement: Hits (and its subclasses like HitsFromQueryParallel), HitGroups, DocResults, Facets, etc.
4 rules from this sentence
SearchResult is a contract
Holds
HitGroups implements SearchResult
Holds
DocResults implements SearchResult
Holds
Facets implements SearchResult
Holds
Read Oct 2
These are the important interfaces and classes involved in BlackLab's cache system and BLS's implementation: Search<R extends SearchResult> and its subclasses can be used to build complete descriptions of search requests (e.g. a query for hits, with optional sorting, grouping, etc.). It has execute() and executeAsync() methods that execute the search task described by the "tree" of Searches.
2 rules from this sentence
Search has an execute method
Holds
Search has an executeAsync method
Holds
Read Oct 2
The different classes rely on each other's functionality, so SearchHitsSorted gets a SearchHits as a parameter and will call its execute method before sorting the hits produced by that.
SearchHitsSorted depends on SearchHits
Holds
Read Oct 2
Search<R>.executeAsync() calls SearchCache.getAsync(this), which will return a SearchCacheEntry<R extends SearchResult> that either has already completed (i.e. the results are actually in the cache from before) or will be executed and produce its results when the SearchCacheEntry (a Future) completes (i.e. wasn't in the cache but is now and is being or will be executed).
SearchCache is a contract
Holds
Read Oct 2
Its main two methods are get() and getAsync(), which take a search (subclass of Search<R extends SearchResult>, where R is the type of SearchResult we expect from the search).
SearchCache has a getAsync method
Holds
Read Oct 2
BlsCache implements SearchCache that manages the cache based on the amount of free Java heap memory to strive for, how long a search has been running, how long since results have been accessed, etc.
BlsCache implements SearchCache
Holds
Read Oct 2
BlsCacheEntry submits a Runnable to BlackLabEngine's searchExecutorService.
BlsCacheEntry depends on BlackLabEngine
Holds
Read Oct 2
SpanQuerySequence.optimize() (should be able to eliminate this as rewrite() does everything as well?)
SpanQuerySequence has an optimize method
Holds
Read Oct 2
BLSpanQuery.rewrite() (bulk of the optimizations) including ClauseCombiner (called from SpanQuerySequence.rewrite())
2 rules from this sentence
BLSpanQuery has a rewrite method
Holds
SpanQuerySequence depends on ClauseCombiner
Holds
Read Oct 2
To do this, pass usecontent=orig to BlackLab Server, or call Hits.settings().setConcordanceType(ConcordanceType.CONTENT_STORE).
ConcordanceType has CONTENT_STORE
Holds
Read Oct 2
The AnnotationWriter.addValue(String) method adds a value to an annotation at the next corpus position.
AnnotationWriter has an addValue method
Holds
Read Oct 2
You can do so using the AnnotationWriter.addValueAtPosition(String, Integer) method.
AnnotationWriter has an addValueAtPosition method
Holds
Read Oct 2
Then use AnnotationWriter.addPayload().
AnnotationWriter has an addPayload method
Holds
Read Oct 2
the return value of the getId() method.
Plugin has a getId method
Holds
Read Oct 2
A plugin's name is just the value returned by getName().
Plugin has a getName method
Holds
Read Oct 2
From the initialize() method, you can access the configuration using either method like cfgString(key, defaultValue) or fullConfig() to get the full map.
3 rules from this sentence
Plugin has an initialize method
Holds
Plugin has a cfgString method
Holds
Plugin has a fullConfig method
Holds
Read Oct 2
then in the plugin's code (e.g. FileConverter.perform()), you can access the parameter value via e.g.
FileConverter has a perform method
Holds
Read Oct 2
Note that QueryFunction.applyFunc() is declared to return TextPattern.EvalResult.
QueryFunction has an applyFunc method
Holds
32 rules from 4 docs

See these where the change is. The browser extension puts a pull request's doc findings, and a diagram of what it changed, on the GitHub page itself, so the code and what your docs say about it are side by side.