Skip to content

Commit

Permalink
HSEARCH-831 Add native support for PositionIncrementAttribute
Browse files Browse the repository at this point in the history
  • Loading branch information
emmanuelbernard authored and hferentschik committed Aug 24, 2011
1 parent 93c3c35 commit 8731f2f
Show file tree
Hide file tree
Showing 10 changed files with 50 additions and 2 deletions.
Expand Up @@ -267,6 +267,9 @@ else if ( "PayloadAttribute".equals( name ) ) {
else if ( "KeywordAttribute".equals( name ) ) {
hydrator.addKeywordAttribute( asBoolean(record, "isKeyword") );
}
else if ( "PositionIncrementAttribute".equals( name ) ) {
hydrator.addPositionIncrementAttribute( asInt(record, "positionIncrement") );
}
else {
log.unknownAttributeSerializedRepresentation( name );
}
Expand Down
Expand Up @@ -83,6 +83,7 @@ public AvroSerializationProvider() {
parseSchema( "attribute/CharTermAttribute" );
parseSchema( "attribute/PayloadAttribute" );
parseSchema( "attribute/KeywordAttribute" );
parseSchema( "attribute/PositionIncrementAttribute" );
parseSchema( "TokenStreamField" );
parseSchema( "ReaderField" );
parseSchema( "StringField" );
Expand Down
Expand Up @@ -40,6 +40,7 @@
import org.apache.lucene.analysis.tokenattributes.CharTermAttributeImpl;
import org.apache.lucene.analysis.tokenattributes.KeywordAttribute;
import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.util.AttributeImpl;
import org.apache.solr.handler.AnalysisRequestHandlerBase;
Expand Down Expand Up @@ -259,6 +260,12 @@ else if (attr instanceof KeywordAttribute) {
record.put("isKeyword", narrowedAttr.isKeyword() );
return record;
}
else if (attr instanceof PositionIncrementAttribute ) {
GenericRecord record = new GenericData.Record( protocol.getType( "PositionIncrementAttribute" ) );
PositionIncrementAttribute narrowedAttr = (PositionIncrementAttribute) attr;
record.put("positionIncrement", narrowedAttr.getPositionIncrement() );
return record;
}
else if (attr instanceof Serializable) {
return ByteBuffer.wrap( toByteArray(attr) );
}
Expand Down
Expand Up @@ -31,6 +31,7 @@
import org.apache.lucene.analysis.tokenattributes.CharTermAttributeImpl;
import org.apache.lucene.analysis.tokenattributes.KeywordAttribute;
import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Fieldable;
Expand Down Expand Up @@ -281,7 +282,16 @@ public void addKeywordAttribute(boolean isKeyword) {
AttributeImpl attr = AttributeSource.AttributeFactory
.DEFAULT_ATTRIBUTE_FACTORY
.createAttributeInstance( KeywordAttribute.class );
( (KeywordAttribute) attr).setKeyword(isKeyword);
( (KeywordAttribute) attr).setKeyword( isKeyword );
getAttributes().add( attr );
}

@Override
public void addPositionIncrementAttribute(int positionIncrement) {
AttributeImpl attr = AttributeSource.AttributeFactory
.DEFAULT_ATTRIBUTE_FACTORY
.createAttributeInstance( PositionIncrementAttribute.class );
( (PositionIncrementAttribute) attr).setPositionIncrement(positionIncrement);
getAttributes().add( attr );
}

Expand Down
Expand Up @@ -76,5 +76,7 @@ public interface LuceneWorksBuilder {

void addKeywordAttribute(boolean isKeyword);

void addPositionIncrementAttribute(int positionIncrement);

void addToken();
}
Expand Up @@ -12,7 +12,8 @@
"TokenTrackingAttribute",
"CharTermAttribute",
"PayloadAttribute",
"KeywordAttribute"
"KeywordAttribute",
"PositionIncrementAttribute"
]
}
}
Expand Down
Expand Up @@ -10,6 +10,7 @@
`attribute/CharTermAttribute`,
`attribute/PayloadAttribute`,
`attribute/KeywordAttribute`,
`attribute/PositionIncrementAttribute`,

`BinaryField`,
`ReaderField`,
Expand Down
@@ -0,0 +1,10 @@
{
"name": "PositionIncrementAttribute",
"type": "record",
"fields" : [
{
"name": "positionIncrement",
"type": "int"
}
]
}
Expand Up @@ -60,6 +60,7 @@ public void experimentWithAvro() throws Exception {
parseSchema( root + "attribute" + File.separator + "CharTermAttribute.avro", "attribute/CharTermAttribute" );
parseSchema( root + "attribute" + File.separator + "PayloadAttribute.avro", "attribute/PayloadAttribute" );
parseSchema( root + "attribute" + File.separator + "KeywordAttribute.avro", "attribute/KeywordAttribute" );
parseSchema( root + "attribute" + File.separator + "PositionIncrementAttribute.avro", "attribute/PositionIncrementAttribute" );
parseSchema( root + "TermVector.avro", "TermVector" );
parseSchema( root + "Index.avro", "Index" );
parseSchema( root + "Store.avro", "Store" );
Expand Down
Expand Up @@ -35,6 +35,8 @@
import org.apache.lucene.analysis.tokenattributes.KeywordAttributeImpl;
import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
import org.apache.lucene.analysis.tokenattributes.PayloadAttributeImpl;
import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttributeImpl;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Fieldable;
Expand Down Expand Up @@ -227,6 +229,11 @@ private List<LuceneWork> buildWorks() {
keywordAttr.setKeyword( true );
source.get(0).add( keywordAttr );

PositionIncrementAttributeImpl posIncrAttr = new PositionIncrementAttributeImpl();
posIncrAttr.setPositionIncrement( 3 );
source.get(0).add( posIncrAttr );


CopyTokenStream tokenStream = new CopyTokenStream( source );
field = new Field("tokenstream", tokenStream);
doc.add(field);
Expand Down Expand Up @@ -373,6 +380,11 @@ else if ( origAttr instanceof KeywordAttribute) {
( (KeywordAttribute) copyAttr ).isKeyword()
);
}
else if ( origAttr instanceof PositionIncrementAttribute) {
assertThat( ( (PositionIncrementAttribute) origAttr).getPositionIncrement() ).isEqualTo(
( (PositionIncrementAttribute) copyAttr ).getPositionIncrement()
);
}
}
}
return true;
Expand Down

0 comments on commit 8731f2f

Please sign in to comment.