<?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 Indexer.php</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>2cda016644e923dbda996c52bedee2113ba6d653 - Indexer: signal nothing-to-do via boolean return instead of void</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#2cda016644e923dbda996c52bedee2113ba6d653</link>
        <description>Indexer: signal nothing-to-do via boolean return instead of voidThe TaskRunner runs indexing, sitemap, digest and changelog-trim tasksin sequence and relies on each task returning false when it did no workso the next one is tried. The indexer rewrite changed addPage(),deletePage() and renamePage() to return void and only abort viaexceptions, breaking that contract: indexing always looked like work wasdone and the following tasks never ran.Restore the boolean return on these three methods (true when work wasdone, false when there was nothing to do) while still using exceptionsto signal errors, and propagate it through TaskRunner::runIndexer().runIndexer() also no longer forces reindexing on every call.The legacy compatibility layer is adjusted to match: LegacyIndexer andidx_addPage() forward the boolean, mapping SearchExceptions back to thehistoric error-message/false returns. LegacyIndexer::renamePage()restores the &apos;page is not in index&apos; message that the move plugin expects.Closes #4661

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Wed, 17 Jun 2026 09:43:26 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;gohr@cosmocode.de&gt;</dc:creator>
    </item>
<item>
        <title>79dae64d6746363b953e6c82844ef285c37c3310 - Indexer: treat same-second save and index as up to date</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#79dae64d6746363b953e6c82844ef285c37c3310</link>
        <description>Indexer: treat same-second save and index as up to dateneedsIndexing() compared the .indexed tag mtime against the page mtimewith &lt;=, so a page that was saved and indexed within the same second wasalways reported as still needing indexing. Require the page to bestrictly newer than the index tag instead, so an equal mtime correctlycounts as up to date.

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Wed, 17 Jun 2026 09:42:15 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;gohr@cosmocode.de&gt;</dc:creator>
    </item>
<item>
        <title>2ff7e61c42ef53b6a5d0a212c1785d7adeed08df - fix(indexer): explicitly handle renames</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#2ff7e61c42ef53b6a5d0a212c1785d7adeed08df</link>
        <description>fix(indexer): explicitly handle renamesIn an attempt to simplify the index handling, the newly refactoredindexer implemented a rename as delete+add sequence.This had unintended consequences for the move plugin which may moveseveral pages at once, requiring a working index even while some pageshave already been moved while others still remain at their old location.Related to #4646

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Wed, 10 Jun 2026 09:56:23 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;gohr@cosmocode.de&gt;</dc:creator>
    </item>
<item>
        <title>6e39b4e379a661a3abd765df49fa679d2119741c - refactor(search): extract LegacyIndexer wrapper for BC contract</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#6e39b4e379a661a3abd765df49fa679d2119741c</link>
        <description>refactor(search): extract LegacyIndexer wrapper for BC contractMove the deprecated helpers (lookupKey, addMetaKeys, renameMetaValue,getPID, lookup) off Indexer and into a new LegacyIndexer wrapper. Thewrapper also restores the Doku_Indexer return contract (true|string)around addPage/deletePage/renamePage/clear so plugins using the legacyAPI keep working without try/catch.idx_get_indexer() now returns the LegacyIndexer; getPages stays onIndexer because plugins call it directly on Indexer instances.fixes #4645

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Thu, 28 May 2026 19:23:41 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>5d034a75ec636eaf8dd957fac678f8d04e5b23fc - SearchIndex: increase index version</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#5d034a75ec636eaf8dd957fac678f8d04e5b23fc</link>
        <description>SearchIndex: increase index version

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Wed, 08 Apr 2026 18:32:32 +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/Indexer.php#9369b4a991666bc911474806b106d8958e79f4c1</link>
        <description>SearchIndex: rector, phpcs, type hint fixes

            List of files:
            /dokuwiki/inc/Search/Indexer.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/Indexer.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/Indexer.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>e1272c0811878577a2d543205c32808742d4a5da - SearchIndex: add backward compatibility wrappers</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#e1272c0811878577a2d543205c32808742d4a5da</link>
        <description>SearchIndex: add backward compatibility wrappersAdd deprecated wrappers for idx_* and ft_* functions that were removedwhen inc/indexer.php and inc/fulltext.php were replaced by the newSearch classes. These wrappers delegate to the new architecture andensure existing plugins continue to work.Deprecated standalone functions: idx_get_indexer, idx_getIndex,idx_lookup, idx_listIndexLengths, idx_indexLengths, ft_pageSearch,ft_backlinks, ft_mediause, ft_pageLookup, ft_snippet, ft_pagesorter,ft_snippet_re_preprocess, ft_queryParser.Deprecated methods on Indexer: lookupKey, getPages, addMetaKeys,renameMetaValue, getPID, lookup.Also migrates remaining core callers (Ajax, FeedCreator, ApiCore) touse the new classes directly and fixes a UTF-8 case folding bug inMetadataSearch title lookups.

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Tue, 07 Apr 2026 17:55:12 +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/Indexer.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/Indexer.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/Indexer.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/Indexer.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>3df1553d73ccc6b91128934c7c96b716b3942a0c - use Logger::debug() instead of deprecated dbglog()</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#3df1553d73ccc6b91128934c7c96b716b3942a0c</link>
        <description>use Logger::debug() instead of deprecated dbglog()

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Mon, 29 Nov 2021 13:11:09 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>5792814ceec77d6d39fe39e061d967f18d685f34 - fix scrutinizer claims</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#5792814ceec77d6d39fe39e061d967f18d685f34</link>
        <description>fix scrutinizer claims

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Fri, 25 Sep 2020 09:01:54 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>725e8e5f1de55fe91234a551f65f436015c3615e - instantiate *Index with numeric page id</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#725e8e5f1de55fe91234a551f65f436015c3615e</link>
        <description>instantiate *Index with numeric page idwill reduce access to static $pidCache

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Fri, 25 Sep 2020 08:16:45 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>a32da6dda625a55bd713657b22f3ab332757fca6 - change Index objects to non-singleton</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#a32da6dda625a55bd713657b22f3ab332757fca6</link>
        <description>change Index objects to non-singletonIndexer, FulltextIndex, MetadataIndex uses common directory to store *.idx files, but this does not mean they should be singleton objects to avoid lock confrictions.

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Fri, 25 Sep 2020 07:15:28 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>a16bd5489e1dd5e6c42803b19bc20d9231c91a16 - remove unnecessary if blocks</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#a16bd5489e1dd5e6c42803b19bc20d9231c91a16</link>
        <description>remove unnecessary if blocksgetPID(), saveIndex(), saveIndexKey(), getPageWords() return always true, otherwise exceptions.

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Mon, 21 Sep 2020 13:41:44 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>15f699ac4db38c7098b4ae4cd0782dff13d46637 - replace user errors with exceptions</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#15f699ac4db38c7098b4ae4cd0782dff13d46637</link>
        <description>replace user errors with exceptionsExceptions are better to handle than errors. What I don&apos;t like is thatwe now have an unfortunate mix of return code and exception signallingfor errors. Some methods still return false for errors while othersnow throw exceptions (always returning true otherwise).

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Thu, 10 Sep 2020 15:33:48 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>abb227bc2532048e5b08018c1e7fbd794d051145 - add comment for $requireLock argument</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#abb227bc2532048e5b08018c1e7fbd794d051145</link>
        <description>add comment for $requireLock argument

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Fri, 13 Mar 2020 09:15:58 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>51ddbadd349647574755305e1ab08620b7a7ff43 - move histogram() into MetadataIndex class</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#51ddbadd349647574755305e1ab08620b7a7ff43</link>
        <description>move histogram() into MetadataIndex class

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Thu, 20 Feb 2020 13:53:30 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>5f9bd5254db05edabb88ea752a027b5b6e4a7327 - Revert &quot;histogram() change args order&quot;</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#5f9bd5254db05edabb88ea752a027b5b6e4a7327</link>
        <description>Revert &quot;histogram() change args order&quot;This reverts commit 4d04b7bbfe9c97673b0f22586d88e161aca34f70.

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Thu, 20 Feb 2020 10:06:19 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>11d2e7d0b6c01d01c6214ba4615f13d70e0da4b2 - simplify dispatch()</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Search/Indexer.php#11d2e7d0b6c01d01c6214ba4615f13d70e0da4b2</link>
        <description>simplify dispatch()

            List of files:
            /dokuwiki/inc/Search/Indexer.php</description>
        <pubDate>Thu, 20 Feb 2020 09:21:21 +0000</pubDate>
        <dc:creator>Satoshi Sahara &lt;sahara.satoshi@gmail.com&gt;</dc:creator>
    </item>
</channel>
</rss>
