[
https://issues.apache.org/jira/browse/LUCENE-6863?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Adrien Grand updated LUCENE-6863:
---------------------------------
Attachment: LUCENE-6863.patch
Here is a patch. It detects sparsity by checking if less than 10% documents
have a value. When this happens, it stores doc IDs that have a value using a
DirectMonotonicWriter and non-missing values as a regular numeric field (so
values will still be compressed with table/gcd compression if applicable).
I first wanted to update the format javadocs but noticed that the low-level
javadocs were very outdated (still documenting that sorted doc values were
stored in a FST) so I decided to remove the low-level description in favour of
the high-level one, which is much more interesting in my opinion.
This is just a first iteration, tests pass but maybe the heuristic needs to be
better thought. I will also do some benchmarking.
> Store sparse doc values more efficiently
> ----------------------------------------
>
> Key: LUCENE-6863
> URL: https://issues.apache.org/jira/browse/LUCENE-6863
> Project: Lucene - Core
> Issue Type: Improvement
> Reporter: Adrien Grand
> Assignee: Adrien Grand
> Attachments: LUCENE-6863.patch
>
>
> For both NUMERIC fields and ordinals of SORTED fields, we store data in a
> dense way. As a consequence, if you have only 1000 documents out of 1B that
> have a value, and 8 bits are required to store those 1000 numbers, we will
> not require 1KB of storage, but 1GB.
> I suspect this mostly happens in abuse cases, but still it's a pity that we
> explode storage requirements. We could try to detect sparsity and compress
> accordingly.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]