<?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 AbstractIndex.php</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>9369b4a991666bc911474806b106d8958e79f4c1 - SearchIndex: rector, phpcs, type hint fixes</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Index/AbstractIndex.php#9369b4a991666bc911474806b106d8958e79f4c1</link>
        <description>SearchIndex: rector, phpcs, type hint fixes

            List of files:
            /dokuwiki/inc/Search/Index/AbstractIndex.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>1148921de6af6909f19cb5b30b698d0f27d7751e - SearchIndex: unify CollectionSearch API and optimize search pipeline</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Index/AbstractIndex.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/inc/Search/Index/AbstractIndex.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/inc/Search/Index/AbstractIndex.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/Index/AbstractIndex.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>83b3acccb42578eaa33f84e6b13612436320090b - SearchIndex: rewrite Indexer to use Collection classes</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Index/AbstractIndex.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/Index/AbstractIndex.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>c66b5ec65fd5aa2f1037d2be542b49297f3aac0e - SearchIndex: rewrite Lock as static registry with reference counting</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Index/AbstractIndex.php#c66b5ec65fd5aa2f1037d2be542b49297f3aac0e</link>
        <description>SearchIndex: rewrite Lock as static registry with reference countingReplace the instance-based Lock class with a static registry thattracks held locks per-process with reference counting. This solvesthree problems:- Split indexes (w3, w4, ...) share a single lock name and now  coordinate naturally via the registry- Multiple callers can acquire the same lock without conflict- Indexes enforce their own writability through lock()/unlock()  methods on AbstractIndexThe Lock registry manages both the filesystem lock (mkdir) and thein-process tracking. The first acquire creates the directory, subsequentacquires increment the refcount. Release decrements, and only removesthe directory when the count reaches zero.Note: I am not sure if implementing this as a static object is a greatidea or if we should pass an instance through the collection to theindexes...

            List of files:
            /dokuwiki/inc/Search/Index/AbstractIndex.php</description>
        <pubDate>Sun, 05 Apr 2026 17:42:37 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>596d5287d7a816d606ef4153ef9e0f4704bf8f73 - Working fulltext collection and search</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Index/AbstractIndex.php#596d5287d7a816d606ef4153ef9e0f4704bf8f73</link>
        <description>Working fulltext collection and searchThis finalizes the FulltextCollection and FulltextCollectionSearchclasses. Proper locking is implemented, tests have been enhanced.It should be possible to reimplement the page full text search on top ofit.

            List of files:
            /dokuwiki/inc/Search/Index/AbstractIndex.php</description>
        <pubDate>Thu, 11 May 2023 10:55:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>7fcedc39d164da3013a88e9ad6660009940e851b - Indexes can now be opened in readonly mode</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Index/AbstractIndex.php#7fcedc39d164da3013a88e9ad6660009940e851b</link>
        <description>Indexes can now be opened in readonly mode

            List of files:
            /dokuwiki/inc/Search/Index/AbstractIndex.php</description>
        <pubDate>Tue, 09 May 2023 19:32:34 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>9f63f003f1342f30f2226786546a29e25d1b79ee - add method to retrieve multiple rows at once</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Index/AbstractIndex.php#9f63f003f1342f30f2226786546a29e25d1b79ee</link>
        <description>add method to retrieve multiple rows at once

            List of files:
            /dokuwiki/inc/Search/Index/AbstractIndex.php</description>
        <pubDate>Mon, 08 May 2023 17:01:16 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>03a35633c932eca1b7b0d373d08b9140884a0ebe - added method to search an index by regular expression</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Index/AbstractIndex.php#03a35633c932eca1b7b0d373d08b9140884a0ebe</link>
        <description>added method to search an index by regular expression

            List of files:
            /dokuwiki/inc/Search/Index/AbstractIndex.php</description>
        <pubDate>Mon, 12 Sep 2022 16:41:04 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>8ed350114c28d737f70b07d31d3945e1fab55bb9 - better method names</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Index/AbstractIndex.php#8ed350114c28d737f70b07d31d3945e1fab55bb9</link>
        <description>better method names

            List of files:
            /dokuwiki/inc/Search/Index/AbstractIndex.php</description>
        <pubDate>Wed, 08 Dec 2021 16:47:13 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>d6396b6d927e3ff373c0aed3927ae61eaca8d537 - we need the same access methods in both index types</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Index/AbstractIndex.php#d6396b6d927e3ff373c0aed3927ae61eaca8d537</link>
        <description>we need the same access methods in both index types

            List of files:
            /dokuwiki/inc/Search/Index/AbstractIndex.php</description>
        <pubDate>Wed, 08 Dec 2021 16:41:50 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>ec5280ef60d74097cbe378fec2fe18b93cc6b04e - rearranging the Index class structure</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Index/AbstractIndex.php#ec5280ef60d74097cbe378fec2fe18b93cc6b04e</link>
        <description>rearranging the Index class structureThis is a first step at stuff at restructuring the indexing classes abit more.Some background:We have basically two different kind of index files:a) RowIndex (like page.idx)Each line in the index contains a single value. The line number is usedas primary ID. These files can be very large. Thus an index like thatshould never be read into memory completely if it can be avoided.b) TupleIndex (like i12.idx)Each line contains a list of tuples. The files tend to be smaller soloading them completely for search and replace is easier.Since the the access is so completely different, I tried to model thatin the two different classes, basically moving the methods from\dokuwiki\Search\AbstractIndex to the new classes.While doing so, I tried to make the doc blocks, variable names andinterface easier to understand. I also added tests for each of themethods.The old code has not been touched yet. So these classes do not doanything outside of tests currently.

            List of files:
            /dokuwiki/inc/Search/Index/AbstractIndex.php</description>
        <pubDate>Sat, 04 Dec 2021 14:48:57 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
</channel>
</rss>
