2022-05-24 18:03:31 +09:30
|
|
|
package entity
|
|
|
|
|
|
|
|
type WordIndex struct {
|
2022-05-28 16:16:08 +09:30
|
|
|
Word string `bolthold:"index"`
|
2022-05-24 18:03:31 +09:30
|
|
|
// Bitmap roaring.Bitmap
|
|
|
|
Bitmap map[uint64]bool
|
|
|
|
}
|
|
|
|
|
|
|
|
// func (wi WordIndex) GobEncode() ([]byte, error) {
|
|
|
|
|
|
|
|
// bmBuf := new(bytes.Buffer)
|
|
|
|
// wi.Bitmap.WriteTo(bmBuf) // we omit error handling
|
|
|
|
|
|
|
|
// wordBytes := []byte(wi.Word)
|
|
|
|
// serialised := make([]byte, 4, 4)
|
|
|
|
// binary.BigEndian.PutUint32(serialised, uint32(len(wordBytes)))
|
|
|
|
|
|
|
|
// serialised = append(serialised, wordBytes...)
|
|
|
|
// serialised = append(serialised, bmBuf.Bytes()...)
|
|
|
|
// // log.Printf("serialised: %v", serialised)
|
|
|
|
|
|
|
|
// // log.Printf("serialised to %d bytes for word %w\n%#v", len(serialised), wi.Word, serialised)
|
|
|
|
|
|
|
|
// return serialised, nil
|
|
|
|
// }
|
|
|
|
|
|
|
|
// func (wi *WordIndex) GobDecode(b []byte) error {
|
|
|
|
// size := binary.BigEndian.Uint32(b[0:4])
|
|
|
|
// wi.Word = string(b[4 : size+4])
|
|
|
|
// // log.Printf("word is %s size was %d\n%v", wi.Word, size, b)
|
|
|
|
|
|
|
|
// bmBuf := bytes.NewReader(b[size+4:])
|
|
|
|
|
|
|
|
// wi.Bitmap = *roaring.New()
|
|
|
|
// _, err := wi.Bitmap.ReadFrom(bmBuf)
|
|
|
|
// // log.Printf("N: %d, err: %s", n, err)
|
|
|
|
|
|
|
|
// return err
|
|
|
|
// }
|