firestorm TermFreqRow.ParseKey() func
This commit is contained in:
parent
83cd8da394
commit
8389027ae8
@ -62,32 +62,39 @@ func InitTermFreqRow(tfr *TermFreqRow, field uint16, term []byte, docID []byte,
|
|||||||
|
|
||||||
func NewTermFreqRowKV(key, value []byte) (*TermFreqRow, error) {
|
func NewTermFreqRowKV(key, value []byte) (*TermFreqRow, error) {
|
||||||
rv := TermFreqRow{}
|
rv := TermFreqRow{}
|
||||||
|
err := rv.ParseKey(key)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
err = rv.value.Unmarshal(value)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &rv, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (tfr *TermFreqRow) ParseKey(key []byte) error {
|
||||||
keyLen := len(key)
|
keyLen := len(key)
|
||||||
if keyLen < 3 {
|
if keyLen < 3 {
|
||||||
return nil, fmt.Errorf("invalid term frequency key, no valid field")
|
return fmt.Errorf("invalid term frequency key, no valid field")
|
||||||
}
|
}
|
||||||
rv.field = binary.LittleEndian.Uint16(key[1:3])
|
tfr.field = binary.LittleEndian.Uint16(key[1:3])
|
||||||
|
|
||||||
termStartPos := 3
|
termStartPos := 3
|
||||||
termEndPos := bytes.IndexByte(key[termStartPos:], ByteSeparator)
|
termEndPos := bytes.IndexByte(key[termStartPos:], ByteSeparator)
|
||||||
if termEndPos < 0 {
|
if termEndPos < 0 {
|
||||||
return nil, fmt.Errorf("invalid term frequency key, no byte separator terminating term")
|
return fmt.Errorf("invalid term frequency key, no byte separator terminating term")
|
||||||
}
|
}
|
||||||
rv.term = key[termStartPos : termStartPos+termEndPos]
|
tfr.term = key[termStartPos : termStartPos+termEndPos]
|
||||||
|
|
||||||
docStartPos := termStartPos + termEndPos + 1
|
docStartPos := termStartPos + termEndPos + 1
|
||||||
docEndPos := bytes.IndexByte(key[docStartPos:], ByteSeparator)
|
docEndPos := bytes.IndexByte(key[docStartPos:], ByteSeparator)
|
||||||
rv.docID = key[docStartPos : docStartPos+docEndPos]
|
tfr.docID = key[docStartPos : docStartPos+docEndPos]
|
||||||
|
|
||||||
docNumPos := docStartPos + docEndPos + 1
|
docNumPos := docStartPos + docEndPos + 1
|
||||||
rv.docNum, _ = binary.Uvarint(key[docNumPos:])
|
tfr.docNum, _ = binary.Uvarint(key[docNumPos:])
|
||||||
|
|
||||||
err := rv.value.Unmarshal(value)
|
return nil
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &rv, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tfr *TermFreqRow) KeySize() int {
|
func (tfr *TermFreqRow) KeySize() int {
|
||||||
|
Loading…
Reference in New Issue
Block a user