Search in sources :

Example 1 with LegacyNumericTokenStream

use of org.apache.solr.legacy.LegacyNumericTokenStream in project lucene-solr by apache.

the class TestNumericTokenStream method testLongStream.

public void testLongStream() throws Exception {
    @SuppressWarnings("resource") final LegacyNumericTokenStream stream = new LegacyNumericTokenStream().setLongValue(lvalue);
    final TermToBytesRefAttribute bytesAtt = stream.getAttribute(TermToBytesRefAttribute.class);
    assertNotNull(bytesAtt);
    final TypeAttribute typeAtt = stream.getAttribute(TypeAttribute.class);
    assertNotNull(typeAtt);
    final LegacyNumericTokenStream.LegacyNumericTermAttribute numericAtt = stream.getAttribute(LegacyNumericTokenStream.LegacyNumericTermAttribute.class);
    assertNotNull(numericAtt);
    stream.reset();
    assertEquals(64, numericAtt.getValueSize());
    for (int shift = 0; shift < 64; shift += LegacyNumericUtils.PRECISION_STEP_DEFAULT) {
        assertTrue("New token is available", stream.incrementToken());
        assertEquals("Shift value wrong", shift, numericAtt.getShift());
        assertEquals("Term is incorrectly encoded", lvalue & ~((1L << shift) - 1L), LegacyNumericUtils.prefixCodedToLong(bytesAtt.getBytesRef()));
        assertEquals("Term raw value is incorrectly encoded", lvalue & ~((1L << shift) - 1L), numericAtt.getRawValue());
        assertEquals("Type incorrect", (shift == 0) ? LegacyNumericTokenStream.TOKEN_TYPE_FULL_PREC : LegacyNumericTokenStream.TOKEN_TYPE_LOWER_PREC, typeAtt.type());
    }
    assertFalse("More tokens available", stream.incrementToken());
    stream.end();
    stream.close();
}
Also used : TypeAttribute(org.apache.lucene.analysis.tokenattributes.TypeAttribute) TermToBytesRefAttribute(org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute) LegacyNumericTokenStream(org.apache.solr.legacy.LegacyNumericTokenStream)

Example 2 with LegacyNumericTokenStream

use of org.apache.solr.legacy.LegacyNumericTokenStream in project lucene-solr by apache.

the class TestNumericTokenStream method testIntStream.

public void testIntStream() throws Exception {
    @SuppressWarnings("resource") final LegacyNumericTokenStream stream = new LegacyNumericTokenStream().setIntValue(ivalue);
    final TermToBytesRefAttribute bytesAtt = stream.getAttribute(TermToBytesRefAttribute.class);
    assertNotNull(bytesAtt);
    final TypeAttribute typeAtt = stream.getAttribute(TypeAttribute.class);
    assertNotNull(typeAtt);
    final LegacyNumericTokenStream.LegacyNumericTermAttribute numericAtt = stream.getAttribute(LegacyNumericTokenStream.LegacyNumericTermAttribute.class);
    assertNotNull(numericAtt);
    stream.reset();
    assertEquals(32, numericAtt.getValueSize());
    for (int shift = 0; shift < 32; shift += LegacyNumericUtils.PRECISION_STEP_DEFAULT) {
        assertTrue("New token is available", stream.incrementToken());
        assertEquals("Shift value wrong", shift, numericAtt.getShift());
        assertEquals("Term is incorrectly encoded", ivalue & ~((1 << shift) - 1), LegacyNumericUtils.prefixCodedToInt(bytesAtt.getBytesRef()));
        assertEquals("Term raw value is incorrectly encoded", ((long) ivalue) & ~((1L << shift) - 1L), numericAtt.getRawValue());
        assertEquals("Type incorrect", (shift == 0) ? LegacyNumericTokenStream.TOKEN_TYPE_FULL_PREC : LegacyNumericTokenStream.TOKEN_TYPE_LOWER_PREC, typeAtt.type());
    }
    assertFalse("More tokens available", stream.incrementToken());
    stream.end();
    stream.close();
}
Also used : TypeAttribute(org.apache.lucene.analysis.tokenattributes.TypeAttribute) TermToBytesRefAttribute(org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute) LegacyNumericTokenStream(org.apache.solr.legacy.LegacyNumericTokenStream)

Example 3 with LegacyNumericTokenStream

use of org.apache.solr.legacy.LegacyNumericTokenStream in project lucene-solr by apache.

the class TestLegacyFieldReuse method assertNumericContents.

private void assertNumericContents(int value, TokenStream ts) throws IOException {
    assertTrue(ts instanceof LegacyNumericTokenStream);
    LegacyNumericTermAttribute numericAtt = ts.getAttribute(LegacyNumericTermAttribute.class);
    ts.reset();
    boolean seen = false;
    while (ts.incrementToken()) {
        if (numericAtt.getShift() == 0) {
            assertEquals(value, numericAtt.getRawValue());
            seen = true;
        }
    }
    ts.end();
    ts.close();
    assertTrue(seen);
}
Also used : LegacyNumericTermAttribute(org.apache.solr.legacy.LegacyNumericTokenStream.LegacyNumericTermAttribute) LegacyNumericTokenStream(org.apache.solr.legacy.LegacyNumericTokenStream)

Example 4 with LegacyNumericTokenStream

use of org.apache.solr.legacy.LegacyNumericTokenStream in project lucene-solr by apache.

the class TestNumericTokenStream method testNotInitialized.

public void testNotInitialized() throws Exception {
    final LegacyNumericTokenStream stream = new LegacyNumericTokenStream();
    expectThrows(IllegalStateException.class, () -> {
        stream.reset();
    });
    expectThrows(IllegalStateException.class, () -> {
        stream.incrementToken();
    });
    stream.close();
}
Also used : LegacyNumericTokenStream(org.apache.solr.legacy.LegacyNumericTokenStream)

Example 5 with LegacyNumericTokenStream

use of org.apache.solr.legacy.LegacyNumericTokenStream in project lucene-solr by apache.

the class TestLegacyFieldReuse method testNumericReuse.

public void testNumericReuse() throws IOException {
    LegacyIntField legacyIntField = new LegacyIntField("foo", 5, Field.Store.NO);
    // passing null
    TokenStream ts = legacyIntField.tokenStream(null, null);
    assertTrue(ts instanceof LegacyNumericTokenStream);
    assertEquals(LegacyNumericUtils.PRECISION_STEP_DEFAULT_32, ((LegacyNumericTokenStream) ts).getPrecisionStep());
    assertNumericContents(5, ts);
    // now reuse previous stream
    legacyIntField = new LegacyIntField("foo", 20, Field.Store.NO);
    TokenStream ts2 = legacyIntField.tokenStream(null, ts);
    assertSame(ts, ts2);
    assertNumericContents(20, ts);
    // pass a bogus stream and ensure it's still ok
    legacyIntField = new LegacyIntField("foo", 2343, Field.Store.NO);
    TokenStream bogus = new CannedTokenStream(new Token("bogus", 0, 5));
    ts = legacyIntField.tokenStream(null, bogus);
    assertNotSame(bogus, ts);
    assertNumericContents(2343, ts);
    // pass another bogus stream (numeric, but different precision step!)
    legacyIntField = new LegacyIntField("foo", 42, Field.Store.NO);
    assert 3 != LegacyNumericUtils.PRECISION_STEP_DEFAULT;
    bogus = new LegacyNumericTokenStream(3);
    ts = legacyIntField.tokenStream(null, bogus);
    assertNotSame(bogus, ts);
    assertNumericContents(42, ts);
}
Also used : LegacyNumericTokenStream(org.apache.solr.legacy.LegacyNumericTokenStream) CannedTokenStream(org.apache.lucene.analysis.CannedTokenStream) TokenStream(org.apache.lucene.analysis.TokenStream) Token(org.apache.lucene.analysis.Token) CannedTokenStream(org.apache.lucene.analysis.CannedTokenStream) LegacyIntField(org.apache.solr.legacy.LegacyIntField) LegacyNumericTokenStream(org.apache.solr.legacy.LegacyNumericTokenStream)

Aggregations

LegacyNumericTokenStream (org.apache.solr.legacy.LegacyNumericTokenStream)7 TermToBytesRefAttribute (org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute)2 TypeAttribute (org.apache.lucene.analysis.tokenattributes.TypeAttribute)2 CannedTokenStream (org.apache.lucene.analysis.CannedTokenStream)1 Token (org.apache.lucene.analysis.Token)1 TokenStream (org.apache.lucene.analysis.TokenStream)1 LegacyIntField (org.apache.solr.legacy.LegacyIntField)1 LegacyNumericTermAttribute (org.apache.solr.legacy.LegacyNumericTokenStream.LegacyNumericTermAttribute)1