Skip to content
Snippets Groups Projects
Commit 508d0e96 authored by Manish R Jain's avatar Manish R Jain
Browse files

Introduce posting lists

parent e12d17e4
No related branches found
No related tags found
No related merge requests found
......@@ -58,12 +58,15 @@ func main() {
batch := new(leveldb.Batch)
b := flatbuffers.NewBuilder(0)
oi := b.CreateString("mrjn is a smart kid")
on := b.CreateString("His name is jain")
types.UidStart(b)
types.UidAddId(b, oi)
types.UidAddName(b, on)
oe := types.UidEnd(b)
types.PostingListStartIdsVector(b, 2)
b.PlaceUint64(5)
b.PlaceUint64(2)
vec := b.EndVector(2)
types.PostingListStart(b)
types.PostingListAddIds(b, vec)
oe := types.PostingListEnd(b)
b.Finish(oe)
fmt.Println("Value byte size:", len(b.Bytes))
......@@ -92,9 +95,11 @@ func main() {
}
fmt.Println("Value byte size from Leveldb:", len(val))
uid := types.GetRootAsUid(val, 0)
fmt.Println("buffer.uid id =", string(uid.Id()))
fmt.Println("buffer.uid name =", string(uid.Name()))
plist := types.GetRootAsPostingList(val, 0)
fmt.Println("buffer.uid id length =", plist.IdsLength())
for i := 0; i < plist.IdsLength(); i++ {
fmt.Printf("[%d] [%d]\n", i, plist.Ids(i))
}
// http.HandleFunc("/add", addTriple)
// http.ListenAndServe(":8080", nil)
......
namespace types;
table Uid {
id:string;
name:string;
table PostingList {
ids:[ulong];
}
root_type Uid;
root_type PostingList;
// automatically generated, do not modify
package types
import (
flatbuffers "github.com/google/flatbuffers/go"
)
type PostingList struct {
_tab flatbuffers.Table
}
func GetRootAsPostingList(buf []byte, offset flatbuffers.UOffsetT) *PostingList {
n := flatbuffers.GetUOffsetT(buf[offset:])
x := &PostingList{}
x.Init(buf, n + offset)
return x
}
func (rcv *PostingList) Init(buf []byte, i flatbuffers.UOffsetT) {
rcv._tab.Bytes = buf
rcv._tab.Pos = i
}
func (rcv *PostingList) Ids(j int) uint64 {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 {
a := rcv._tab.Vector(o)
return rcv._tab.GetUint64(a + flatbuffers.UOffsetT(j * 8))
}
return 0
}
func (rcv *PostingList) IdsLength() int {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 {
return rcv._tab.VectorLen(o)
}
return 0
}
func PostingListStart(builder *flatbuffers.Builder) { builder.StartObject(1) }
func PostingListAddIds(builder *flatbuffers.Builder, ids flatbuffers.UOffsetT) { builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(ids), 0) }
func PostingListStartIdsVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT { return builder.StartVector(8, numElems, 8)
}
func PostingListEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT { return builder.EndObject() }
// automatically generated, do not modify
package types
import (
flatbuffers "github.com/google/flatbuffers/go"
)
type Uid struct {
_tab flatbuffers.Table
}
func GetRootAsUid(buf []byte, offset flatbuffers.UOffsetT) *Uid {
n := flatbuffers.GetUOffsetT(buf[offset:])
x := &Uid{}
x.Init(buf, n + offset)
return x
}
func (rcv *Uid) Init(buf []byte, i flatbuffers.UOffsetT) {
rcv._tab.Bytes = buf
rcv._tab.Pos = i
}
func (rcv *Uid) Id() []byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 {
return rcv._tab.ByteVector(o + rcv._tab.Pos)
}
return nil
}
func (rcv *Uid) Name() []byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
if o != 0 {
return rcv._tab.ByteVector(o + rcv._tab.Pos)
}
return nil
}
func UidStart(builder *flatbuffers.Builder) { builder.StartObject(2) }
func UidAddId(builder *flatbuffers.Builder, id flatbuffers.UOffsetT) { builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(id), 0) }
func UidAddName(builder *flatbuffers.Builder, name flatbuffers.UOffsetT) { builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(name), 0) }
func UidEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT { return builder.EndObject() }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment