Skip to content

Filter

xorfilter

https://github.com/FastFilter/xorfilter

main.go
package main

import (
    "fmt"

    "github.com/FastFilter/xorfilter"
    "github.com/cespare/xxhash/v2"
)

// https://github.com/matrixorigin/matrixone/blob/6ed78f51b8769898a79b07de2593879eec488ff6/pkg/vm/engine/tae/index/filter.go#L58
func hashV1(v []byte) uint64 {
    return xxhash.Sum64(v)
}

func main() {
    item1 := hashV1([]byte("item1"))
    item2 := hashV1([]byte("item2"))
    item3 := hashV1([]byte("item3"))
    item4 := hashV1([]byte("item4"))

    arr := []uint64{item1, item2, item3, item1, item2, item3}
    filter, err := xorfilter.PopulateBinaryFuse8(arr)
    if err != nil {
        fmt.Println(nil)
    }

    fmt.Println(filter.Contains(item1))
    fmt.Println(filter.Contains(item2))
    fmt.Println(filter.Contains(item3))
    fmt.Println(filter.Contains(item4))
}