You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "Feng Guo (Jira)" <ji...@apache.org> on 2021/11/17 14:50:00 UTC

[jira] (LUCENE-10233) Store docIds as bitset when leafCardinality = 1 to speed up addAll

    [ https://issues.apache.org/jira/browse/LUCENE-10233 ]


    Feng Guo deleted comment on LUCENE-10233:
    -----------------------------------

was (Author: gf2121):
This is the flame graph of keeping running this script, it seems a lot of time took to new a SparseFixedBitSet, which allocate lots of memory then. I'll try to reuse a global SparseFixedBitSet to avoid new memory allocate for each block. However, it seems a bit difficult to get a segment maxDoc in BKDReader?

!image-2021-11-17-22-43-13-693.png!

> Store docIds as bitset when leafCardinality = 1 to speed up addAll
> ------------------------------------------------------------------
>
>                 Key: LUCENE-10233
>                 URL: https://issues.apache.org/jira/browse/LUCENE-10233
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: core/codecs
>            Reporter: Feng Guo
>            Priority: Major
>         Attachments: image-2021-11-17-22-43-13-693.png
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> In low cardinality points cases, id blocks will usually store doc ids that have the same point value, and {{intersect}} will get into {{addAll}} logic. If we store ids as bitset, and give the IntersectVisitor bulk visiting ability, we can speed up addAll because we can just execute the 'or' logic between the result and the block ids.
> Optimization will be triggered when the following conditions are met at the same time:
>  # leafCardinality = 1
>  # max(docId) - min(docId) <= 16 * pointCount (in order to avoid expanding too much storage)
>  # no duplicate doc id
> I mocked a field that has 10,000,000 docs per value and search it with a 1 term PointInSetQuery, the build scorer time decreased from 71ms to 8ms.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org