<?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 CollectionSearchTest.php</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>bc12b8fead60f0630a4d5ef3de17d2c7722aa5cf - fix(search): read split index suffixes correctly</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/_test/tests/Search/Collection/CollectionSearchTest.php#bc12b8fead60f0630a4d5ef3de17d2c7722aa5cf</link>
        <description>fix(search): read split index suffixes correctlyAbstractIndex::max() used /(\d)+\.idx$/ to determine the highest splitindex suffix. For filenames like w10.idx or w12.idx that regex capturedonly the last digit, so the maximum token-length group was truncated to 9.Wildcard searches therefore skipped all fulltext index shards for wordswith 10 or more characters.Tighten the match to the basename and require the current index namefollowed immediately by digits: ^&lt;idx&gt;(\d+)\.idx$. This captures the fullnumeric suffix and also avoids counting unrelated index families thatshare the same prefix, such as treating wiki2.idx as a numbered shard ofthe w index.Add regressions for both behaviors: multi-digit suffixes are parsedcorrectly, and same-prefix indexes are ignored when determining themaximum shard number.

            List of files:
            /dokuwiki/_test/tests/Search/Collection/CollectionSearchTest.php</description>
        <pubDate>Sun, 05 Jul 2026 08:25:22 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<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/CollectionSearchTest.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/CollectionSearchTest.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>21fbd01b3c3eea88b767376b7b158f31f0f63127 - SearchIndex: add integrity checking to Collection architecture</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/_test/tests/Search/Collection/CollectionSearchTest.php#21fbd01b3c3eea88b767376b7b158f31f0f63127</link>
        <description>SearchIndex: add integrity checking to Collection architectureAdd checkIntegrity() to AbstractCollection and DirectCollection thatverifies paired indexes have matching line counts (token==frequency,entity==reverse, entity==token for direct collections). ThrowsIndexIntegrityException on the first inconsistency found.Add Countable interface to AbstractIndex with count() implementationsin MemoryIndex and FileIndex. Add Indexer::checkIntegrity() andIndexer::isIndexEmpty() to orchestrate checks across all collections.Update infoutils.php to use the new Indexer API instead of the oldFulltextIndex/MetadataIndex classes.Fix range(1, 0) bug in three places that produced [1, 0] instead ofan empty array when split-by-length indexes were empty.

            List of files:
            /dokuwiki/_test/tests/Search/Collection/CollectionSearchTest.php</description>
        <pubDate>Tue, 07 Apr 2026 16:09:22 +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/CollectionSearchTest.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/CollectionSearchTest.php</description>
        <pubDate>Tue, 07 Apr 2026 13:33:54 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
</channel>
</rss>
