A custom JavaScript search engine prototype was tested on a dataset of one million synthetic records. The study compared merge and probe search strategies using both compressed and uncompressed indexes. Results showed that for queries involving one rare and one frequent word, the uncompressed probe method performed best at 0.033 ms, while the compressed probe took 0.066 ms.
When processing two frequent words, the standard merge approach proved more efficient at 7.45 ms compared to 14.74 ms for the uncompressed probe and 17.61 ms for the compressed probe. The experiment highlighted that selecting the correct search plan often yields greater performance gains than compression alone.
Memory management issues were identified during file handling. Using subarray to reference index sections caused a 137 MiB file to remain in memory despite the index section occupying only 9 MiB. Explicitly copying the data into a new Uint8Array reduced the process's ArrayBuffer memory usage from 138.57 MiB to 10.59 MiB.
The engine supports local updates via a delta map. Updating 100 IDs takes 0.65 ms, while 10,000 IDs require 47.77 ms. Compacting the database after 10,000 changes takes an average of 9.72 seconds. The system uses a block-based compression format with 128-number segments to allow efficient searching without full decompression.





