static byte _isLike(long packAddr, LikePattern pattern) {
        // We can exclude cases like "ala%" and "a_l_a%"

        if (pattern.original.numBytes() == 0
                || (!pattern.hasAny && !pattern.hasOne)) {
            return _isValue(packAddr, pattern.original);
        }

        int analyzedLen = pattern.analyzed.length;

        for (int posCount : INDEX_POS_COUNT) {
            if (posCount < pattern.minMatchLen && posCount != MAX_POSISTIONS) {
                continue;
            }

            long offset = packAddr + indexOffsetBySize(posCount);
            int checkSize = analyzedLen < posCount ? analyzedLen : posCount;
            boolean match = true;
            for (int pos = 0; pos < checkSize; pos++) {
                if (pattern.one[pos]) {
                    continue;
                }
                if (pattern.any[pos]) {
                    break;
                }
                byte c = pattern.analyzed[pos];
                assert c != 0;
                if (!isSet(offset, c, pos)) {
                    match = false;
                    break;
                }
            }
            if (match) {
                return RSValue.Some;
            }
        }
        return RSValue.None;
    }
Seperate the index by value size.
We have 8 index chunk here.

0, 1, 2, 4, 8, 16, 32, 64
total posistion: 64 * 2

e.g. when comes a value with size 5, put it into "8" size chunk.
indexr-segment/src/main/java/io/indexr/segment/index/RSIndex_CMap_V2.java