<?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 DirectCollection.php</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>d9043e786a4529b7c55cfef4380c888b792fda4c - fix(search): make DirectCollection::getEntitiesWithData() linear</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Collection/DirectCollection.php#d9043e786a4529b7c55cfef4380c888b792fda4c</link>
        <description>fix(search): make DirectCollection::getEntitiesWithData() linearThe method resolved each entity name with a separate retrieveRow() call,each of which rescans the entity index from the start, making the wholeoperation quadratic in the number of entities. This runs onMetadataSearch::getPages(&apos;title&apos;) and hurts large wikis. Collect the entityIDs in one pass and resolve their names with a single batched retrieveRows()read instead.

            List of files:
            /dokuwiki/inc/Search/Collection/DirectCollection.php</description>
        <pubDate>Wed, 08 Jul 2026 16:14:44 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;gohr@cosmocode.de&gt;</dc:creator>
    </item>
<item>
        <title>ebaa848199c71ea8546897e44a6ac97ab143dedd - fix(search): restore histogram() as a Collection method with a BC shim</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Collection/DirectCollection.php#ebaa848199c71ea8546897e44a6ac97ab143dedd</link>
        <description>fix(search): restore histogram() as a Collection method with a BC shimThe indexer rework dropped Doku_Indexer::histogram(), which plugins reachthrough idx_get_indexer()-&gt;histogram() to build tag clouds (e.g. tagfiltervia the &apos;subject&apos; metadata index). Calling it fatalled throughLegacyIndexer::__call as an undefined method.Add histogram() to AbstractCollection: it sums each token&apos;s frequency acrossall entities and returns them ordered by frequency, filtered by min/max/minlen,handling both length-split (fulltext) and single-group (metadata) collections.DirectCollection overrides it for the 1:1 title case (count shared values).LegacyIndexer::histogram() is a deprecated shim dispatching by $key to thematching collection.

            List of files:
            /dokuwiki/inc/Search/Collection/DirectCollection.php</description>
        <pubDate>Sun, 05 Jul 2026 17:22:41 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>9369b4a991666bc911474806b106d8958e79f4c1 - SearchIndex: rector, phpcs, type hint fixes</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Collection/DirectCollection.php#9369b4a991666bc911474806b106d8958e79f4c1</link>
        <description>SearchIndex: rector, phpcs, type hint fixes

            List of files:
            /dokuwiki/inc/Search/Collection/DirectCollection.php</description>
        <pubDate>Wed, 08 Apr 2026 18:30:08 +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/inc/Search/Collection/DirectCollection.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/inc/Search/Collection/DirectCollection.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/inc/Search/Collection/DirectCollection.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/inc/Search/Collection/DirectCollection.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>83b3acccb42578eaa33f84e6b13612436320090b - SearchIndex: rewrite Indexer to use Collection classes</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Collection/DirectCollection.php#83b3acccb42578eaa33f84e6b13612436320090b</link>
        <description>SearchIndex: rewrite Indexer to use Collection classesReplace the intermediate #2943 classes (FulltextIndex, MetadataIndex)with the new Collection-based architecture. The Indexer is now a thinstateless orchestrator that delegates all index work to collections.Key changes:- Indexer no longer extends AbstractIndex; page name passed to methods- addPage/deletePage/clear use PageTitleCollection,  PageFulltextCollection, and PageMetaCollection- New PageMetaCollection replaces separate ReferencesCollection and  MediaCollection with a single class that handles arbitrary metadata  keys dynamically- Shared writable FileIndex(&apos;page&apos;) passed to all collections- Logger callback replaces verbose parameter- Methods return void instead of bool- Index classes implement IteratorAggregate for clean data access- Indexer tests consolidated into namespaced IndexerTest.php- All callers updated to new stateless API

            List of files:
            /dokuwiki/inc/Search/Collection/DirectCollection.php</description>
        <pubDate>Mon, 06 Apr 2026 10:31:11 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>d92c078c66fe0feb3beeeb1a383e15ca031fb4f8 - SearchIndex: add DirectCollection for 1:1 entity-token mappings</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Collection/DirectCollection.php#d92c078c66fe0feb3beeeb1a383e15ca031fb4f8</link>
        <description>SearchIndex: add DirectCollection for 1:1 entity-token mappingsIntroduce DirectCollection as a third collection type alongsideFrequencyCollection and LookupCollection. Direct collections storeexactly one token per entity at the entity&apos;s position in the tokenindex (entity.RID === token.RID), with no frequency or reverse indexes.AbstractCollection now accepts optional frequency/reverse index names(default to &apos;&apos;) and skips locking empty index names.Adds PageTitleCollection as the first concrete direct collectionfor the page -&gt; title mapping.

            List of files:
            /dokuwiki/inc/Search/Collection/DirectCollection.php</description>
        <pubDate>Sun, 05 Apr 2026 14:00:34 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
</channel>
</rss>
