keyword Overlap
open fun keywordOverlap(base: PropositionQuery, tokens: List<String>, limit: Int): List<Proposition>
Find propositions in base's scope whose text contains at least one of tokens (case-insensitive), ranked by how many distinct tokens each contains (descending), ties broken by base's ordering. At most limit results; empty tokens or non-positive limit returns nothing.
There is no full-text index here, so this is CONTAINS-based, not lexically ranked. The default applies base's structured filters through query (ordered by effective confidence so ties are stable) and does the token overlap in memory; a backend with server-side text matching pushes the overlap down. The overlap filter runs before limit so a keyword hit isn't lost to a confidence-ordered cut-off.