<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in TermTest.php</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>1148921de6af6909f19cb5b30b698d0f27d7751e - SearchIndex: unify CollectionSearch API and optimize search pipeline</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/_test/tests/Search/Collection/TermTest.php#1148921de6af6909f19cb5b30b698d0f27d7751e</link>
        <description>SearchIndex: unify CollectionSearch API and optimize search pipeline- Remove separate lookup() API from CollectionSearch. All searches now  use addTerm()/execute() with a single unified pipeline.- Add matches() predicate to Term using efficient string functions  (===, str_starts_with, str_ends_with, str_contains) instead of regex.- Add caseInsensitive() support on CollectionSearch and Term for  metadata/title searches where indexed values preserve case.- Remove callback support from MetadataSearch::lookupKey() &#8212; the only  real usage (case-insensitive substring) is replaced by  caseInsensitive() + wildcards.- Remove min-length validation from Term. Add Tokenizer::isValidSearchTerm()  for callers that need it (FulltextSearch, Indexer::lookup).- Optimize execute() from 4 group passes to 2: scan tokens + resolve  frequencies in one pass per group, batch entity name resolution, then  populate Terms.- Store full match detail in Term: entity &#8594; token &#8594; frequency. New  accessors getMatches(), getEntityTokens(), getEntityFrequencies()  derive different views from this single data structure.- Term no longer used as scratch pad by CollectionSearch. Index-internal  data (token IDs, entity IDs) stays local to execute(). Terms receive  only final resolved results.- Use title from search results in MetadataSearch::pageLookupCallBack()  instead of re-fetching via p_get_first_heading().- Update concept.txt documentation.

            List of files:
            /dokuwiki/_test/tests/Search/Collection/TermTest.php</description>
        <pubDate>Wed, 08 Apr 2026 16:51:16 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>6734bb8cef71e8b4af23e627d4db5430304d55a2 - SearchIndex: rewrite MetadataSearch to use Collection classes</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/_test/tests/Search/Collection/TermTest.php#6734bb8cef71e8b4af23e627d4db5430304d55a2</link>
        <description>SearchIndex: rewrite MetadataSearch to use Collection classesReplace MetadataIndex usage in MetadataSearch with the new Collection/Indexarchitecture. This completes the read-path migration so data written by theCollection-based Indexer is read back correctly using TupleOps tuple format.Generalize FrequencyCollectionSearch into CollectionSearch that works with anyAbstractCollection type (Frequency, Lookup, Direct) and handles bothsplit-by-length and non-split index layouts transparently. DirectCollectionparticipates via resolveTokenFrequencies() which maps token RID = entity RID.Key changes:- AbstractCollection gains isSplitByLength(), resolveTokenFrequencies(),  getEntitiesWithData(), and groupToSuffix() with validation- Index groups are now int (0 = non-split, positive = token length)- CollectionSearch provides both addTerm()/execute() for fulltext and  lookup() for metadata-style search (exact/wildcard/callback)- MetadataSearch delegates entirely to collection APIs- Shared filterPages() replaces duplicated page filtering logic- All callers updated from MetadataIndex to MetadataSearch- Tests moved to Search namespace with full coverage for new APIs

            List of files:
            /dokuwiki/_test/tests/Search/Collection/TermTest.php</description>
        <pubDate>Tue, 07 Apr 2026 13:33:54 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>ede4646658cf51245060332d97a319a39c788ea1 - SearchIndex: reorganize and expand test suite</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/_test/tests/Search/Collection/TermTest.php#ede4646658cf51245060332d97a319a39c788ea1</link>
        <description>SearchIndex: reorganize and expand test suiteMove all Search tests from _test/tests/inc/Search/ to _test/tests/Search/to match the dokuwiki\test autoloader convention. Fix namespaces fromtests\* to dokuwiki\test\* so all tests work in isolation.Extract inline test helpers into separate autoloadable mock files:TestDirectCollection &#8594; MockDirectCollection, TestLookupCollection &#8594;MockLookupCollection, TestFrequencyCollection &#8594; MockFrequencyCollection.Rename AbstractIndexTest &#8594; AbstractIndexTestCase to fix PHPUnit warningabout abstract classes with Test suffix.Replace dead xxxRealWord() with proper testWildcardSearch() verifyingexact token matches and frequencies for all three wildcard types.Add testTokenizedPageSearch() using a dedicated test data file. AddtestNoMatchReturnsEmptyFrequencies() which exposed a bug in Term whereuninitialized $tokens/$frequencies caused crashes on zero-match terms.Replace fulltext_query.test.php with modern QueryParserTest in theSearch\Query namespace.Add new test files:- LockTest: acquire/release, reference counting, stale lock override,  foreign lock rejection, releaseAll, independent locks- NamespacePredicateTest: filter/exclude, sub-namespaces, partial prefix  safety, empty sets, score preservation- PageSetTest: intersect, unite, subtract, isEmpty- QueryEvaluatorTest: word lookups, AND/OR/NOT, namespace filtering,  combined queries, partial namespace prefix safetyFix Term.php: initialize $tokens and $frequencies to [] instead of null.

            List of files:
            /dokuwiki/_test/tests/Search/Collection/TermTest.php</description>
        <pubDate>Mon, 06 Apr 2026 16:45:11 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
</channel>
</rss>
