[ 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: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org