| #
8788dbbd |
| 06-May-2026 |
splitbrain <86426+splitbrain@users.noreply.github.com> |
Rector and PHPCS fixes
|
| #
4f29a5b9 |
| 06-May-2026 |
Andreas Gohr <andi@splitbrain.org> |
SearchIndex: fix comment position
single line comment moved to the wrong line on reformatting
|
| #
9369b4a9 |
| 08-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
SearchIndex: rector, phpcs, type hint fixes
|
| #
1148921d |
| 08-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
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.
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() — 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 → token → 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.
show more ...
|
| #
6734bb8c |
| 07-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
SearchIndex: rewrite MetadataSearch to use Collection classes
Replace MetadataIndex usage in MetadataSearch with the new Collection/Index architecture. This completes the read-path migration so data
SearchIndex: rewrite MetadataSearch to use Collection classes
Replace MetadataIndex usage in MetadataSearch with the new Collection/Index architecture. This completes the read-path migration so data written by the Collection-based Indexer is read back correctly using TupleOps tuple format.
Generalize FrequencyCollectionSearch into CollectionSearch that works with any AbstractCollection type (Frequency, Lookup, Direct) and handles both split-by-length and non-split index layouts transparently. DirectCollection participates 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
show more ...
|
| #
0b1bbbbb |
| 06-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
SearchIndex: rewrite FulltextSearch to use FrequencyCollectionSearch
Replace FulltextIndex->lookupWords() with FrequencyCollectionSearch which correctly handles the compact tuple format written by t
SearchIndex: rewrite FulltextSearch to use FrequencyCollectionSearch
Replace FulltextIndex->lookupWords() with FrequencyCollectionSearch which correctly handles the compact tuple format written by the new Indexer.
Introduce QueryEvaluator with typed stack entries (PageSet, NamespacePredicate, NegatedEntry) for RPN query evaluation. NOT wraps its operand instead of computing a universe complement, so AND with a negated operand becomes efficient set subtraction. The full page index is only loaded for standalone negative or namespace-only queries.
Move QueryParser and QueryEvaluator into the new Search\Query namespace along with the stack entry types.
Simplify FulltextSearch to orchestration: parse query, look up words, evaluate, filter, sort. Replace FT_SNIPPET_NUMBER constant with maxSnippets property. Combine ACL/existence/time filtering into a single pass.
show more ...
|
| #
05606aeb |
| 29-Nov-2021 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
fix undefined array in FulltextSearch
this was already fixed by 5afd958 on 2021-02-05
|
| #
cc3a3cde |
| 26-Sep-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
change MetadataSearch and FulltextSearch to non-singleton
singleton is not effective to reduce multiple instantiations, especially for MetadataSearch which is frequently used in ajax call.
|
| #
a32da6dd |
| 25-Sep-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
change Index objects to non-singleton
Indexer, FulltextIndex, MetadataIndex uses common directory to store *.idx files, but this does not mean they should be singleton objects to avoid lock confrict
change Index objects to non-singleton
Indexer, FulltextIndex, MetadataIndex uses common directory to store *.idx files, but this does not mean they should be singleton objects to avoid lock confrictions.
show more ...
|
| #
15f699ac |
| 10-Sep-2020 |
Andreas Gohr <andi@splitbrain.org> |
replace user errors with exceptions
Exceptions are better to handle than errors. What I don't like is that we now have an unfortunate mix of return code and exception signalling for errors. Some met
replace user errors with exceptions
Exceptions are better to handle than errors. What I don't like is that we now have an unfortunate mix of return code and exception signalling for errors. Some methods still return false for errors while others now throw exceptions (always returning true otherwise).
show more ...
|
| #
9329b002 |
| 02-Feb-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
change static methods into instance methods
|
| #
743c9a28 |
| 31-Jan-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
rename PagewordIndex to FulltextIndex
|
| #
02361d2a |
| 20-Jan-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
define getPages() in AbstractIndex instead of PageIndex
getPages() is inherited to each subclass of AbstractIndex, but MetadataIndex::getPages() will override the inherited method.
|
| #
be5c1ea2 |
| 19-Jan-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
move lookup() to PagewordIndex class, reduce term 'Indexer'
make similar MetadataIndex::lookupKey() and PagewordIndex::lookup()
|
| #
46b83514 |
| 19-Jan-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
resolve conflictions, CodeSniffer errors
|
| #
0cba610b |
| 14-Jan-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
rewrite deprecated ft_* functions
|
| #
86fc7283 |
| 07-Jan-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
separate methods into metadata, Pageword, Page index classes
|
| #
6b6becab |
| 05-Jan-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
bug fix and PHP74 warnings
Warning: Parameter 1 to dokuwiki\Search\MetaSearch::callback_pageLookup() expected to be a reference, value given in /path/to/dokuwiki/inc/Extension/Event.php on line 135
|
| #
677f78a7 |
| 05-Jan-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
move Quicksearch methods into MetaSearch class
pageLookup() does not use fulltext index, but metadata index
|
| #
3837ea91 |
| 05-Jan-2020 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
create QueryParser class
provides convert($query), recert_simple(), and termParser(). No needs to pass $Indexer in method's arguments.
|
| #
0a3e25f4 |
| 28-Dec-2019 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
remove compatibility ft_ functions that are not used anywhere
|
| #
c31af4f3 |
| 27-Dec-2019 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
use Indexer method instead of idx_get_indexer()
|
| #
173bfbca |
| 21-Dec-2019 |
Satoshi Sahara <sahara.satoshi@gmail.com> |
new namespace dokuwiki\Search
|