| f2bbffb5 | 05-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
SearchIndex: extract Collection base class hierarchy
Introduce AbstractCollection as the shared base for all index collections, with FrequencyCollection and LookupCollection as the two abstract subc
SearchIndex: extract Collection base class hierarchy
Introduce AbstractCollection as the shared base for all index collections, with FrequencyCollection and LookupCollection as the two abstract subclasses differing only in how tokens are counted (frequency vs dedup).
Key design decisions: - splitByLength is a constructor parameter on AbstractCollection controlling whether token/frequency indexes use length-based file splitting. This is independent of the collection type. - The reverse index format is self-describing: entries with * have a group prefix (split), entries without don't (non-split). No branching needed in parse/format methods. - addEntity, resolveTokens, updateIndexes, and reverse index handling all live in AbstractCollection. Subclasses only implement countTokens().
Concrete collections: PageFulltextCollection (frequency, split), MediaCollection and ReferencesCollection (lookup, non-split).
Renames FulltextCollection -> PageFulltextCollection and FulltextCollectionSearch -> FrequencyCollectionSearch.
show more ...
|
| 2f70db90 | 04-Dec-2025 |
WillForan <willforan@gmail.com> |
fix: 32bit IP tests w/string of decimal representation, overflows
Math in PHP is hard! sprintf("%.0f",0x7FFFFFFFFFFFFFFF) == sprintf("%.0f",0x7FFFFFFFFFFFFF00)
Changes * 32bit gets own version o
fix: 32bit IP tests w/string of decimal representation, overflows
Math in PHP is hard! sprintf("%.0f",0x7FFFFFFFFFFFFFFF) == sprintf("%.0f",0x7FFFFFFFFFFFFF00)
Changes * 32bit gets own version of tests where expected values are strings * decimalToBinary32 to replace `sprintf("%032b%032b"...)`, avoids overflow * overflow check in ipv4 too * refactor * partsTo64 for 32bit parts into dec value as str (bcmath) * Ip32::$b32 as class constant * condition always PHP_INT_SIZE == 4 for 32bit (instead of == 8 for 64)
show more ...
|
| bc997a9d | 30-Oct-2025 |
Andreas Gohr <gohr@cosmocode.de> |
SearchIndex: TupleOps now work with frequencies of 1
We have indexes where we simply track that a relation between entity and token exists, but there is no frequency. The frequency is always 1. For
SearchIndex: TupleOps now work with frequencies of 1
We have indexes where we simply track that a relation between entity and token exists, but there is no frequency. The frequency is always 1. For those indexes we do not store *1 as frequency but omit it completely.
The TupleOps class now can work with such indexes and will also store frequencies of 1 like this.
show more ...
|