Interface TermToBytesRefAttribute
-
- All Superinterfaces:
Attribute
- All Known Implementing Classes:
CharTermAttributeImpl,CollatedTermAttributeImpl,NumericTokenStream.NumericTermAttributeImpl,Token
public interface TermToBytesRefAttribute extends Attribute
This attribute is requested by TermsHashPerField to index the contents. This attribute can be used to customize the final byte[] encoding of terms.Consumers of this attribute call
getBytesRef()up-front, and then invokefillBytesRef()for each term. Example:final TermToBytesRefAttribute termAtt = tokenStream.getAttribute(TermToBytesRefAttribute.class); final BytesRef bytes = termAtt.getBytesRef(); while (tokenStream.incrementToken() { // you must call termAtt.fillBytesRef() before doing something with the bytes. // this encodes the term value (internally it might be a char[], etc) into the bytes. int hashCode = termAtt.fillBytesRef(); if (isInteresting(bytes)) { // because the bytes are reused by the attribute (like CharTermAttribute's char[] buffer), // you should make a copy if you need persistent access to the bytes, otherwise they will // be rewritten across calls to incrementToken() doSomethingWith(new BytesRef(bytes)); } } ...
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description intfillBytesRef()Updates the bytesgetBytesRef()to contain this term's final encoding, and returns its hashcode.BytesRefgetBytesRef()Retrieve this attribute's BytesRef.
-
-
-
Method Detail
-
fillBytesRef
int fillBytesRef()
Updates the bytesgetBytesRef()to contain this term's final encoding, and returns its hashcode.- Returns:
- the hashcode as defined by
BytesRef.hashCode():int hash = 0; for (int i = termBytes.offset; i < termBytes.offset+termBytes.length; i++) { hash = 31*hash + termBytes.bytes[i]; }Implement this for performance reasons, if your code can calculate the hash on-the-fly. If this is not the case, just returntermBytes.hashCode().
-
getBytesRef
BytesRef getBytesRef()
Retrieve this attribute's BytesRef. The bytes are updated from the current term when the consumer callsfillBytesRef().- Returns:
- this Attributes internal BytesRef.
-
-