@Override public BytesRef next() throws IOException { InputOutput<Long> io = in.next(); if (io == null) { return null; } else { return io.input; } }
void updateEnum(final InputOutput<FSTTermOutputs.TermData> pair) { if (pair == null) { term = null; } else { term = pair.input; meta = pair.output; state.docFreq = meta.docFreq; state.totalTermFreq = meta.totalTermFreq; } decoded = false; seekPending = false; }
void updateEnum(final InputOutput<Long> pair) throws IOException { if (pair == null) { term = null; } else { term = pair.input; ord = pair.output; decodeStats(); } decoded = false; seekPending = false; }
public void testSimple() throws Exception { // Get outputs -- passing true means FST will share // (delta code) the outputs. This should result in // smaller FST if the outputs grow monotonically. But // if numbers are "random", false should give smaller // final size: final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(); // Build an FST mapping BytesRef -> Long final Builder<Long> builder = new Builder<>(FST.INPUT_TYPE.BYTE1, outputs); final BytesRef a = new BytesRef("a"); final BytesRef b = new BytesRef("b"); final BytesRef c = new BytesRef("c"); builder.add(Util.toIntsRef(a, new IntsRefBuilder()), 17L); builder.add(Util.toIntsRef(b, new IntsRefBuilder()), 42L); builder.add(Util.toIntsRef(c, new IntsRefBuilder()), 13824324872317238L); final FST<Long> fst = builder.finish(); assertEquals(13824324872317238L, (long) Util.get(fst, c)); assertEquals(42, (long) Util.get(fst, b)); assertEquals(17, (long) Util.get(fst, a)); BytesRefFSTEnum<Long> fstEnum = new BytesRefFSTEnum<>(fst); BytesRefFSTEnum.InputOutput<Long> seekResult; seekResult = fstEnum.seekFloor(a); assertNotNull(seekResult); assertEquals(17, (long) seekResult.output); // goes to a seekResult = fstEnum.seekFloor(new BytesRef("aa")); assertNotNull(seekResult); assertEquals(17, (long) seekResult.output); // goes to b seekResult = fstEnum.seekCeil(new BytesRef("aa")); assertNotNull(seekResult); assertEquals(b, seekResult.input); assertEquals(42, (long) seekResult.output); assertEquals(Util.toIntsRef(new BytesRef("c"), new IntsRefBuilder()), Util.getByOutput(fst, 13824324872317238L)); assertNull(Util.getByOutput(fst, 47)); assertEquals(Util.toIntsRef(new BytesRef("b"), new IntsRefBuilder()), Util.getByOutput(fst, 42)); assertEquals(Util.toIntsRef(new BytesRef("a"), new IntsRefBuilder()), Util.getByOutput(fst, 17)); }
public void testSimple() throws Exception { // Get outputs -- passing true means FST will share // (delta code) the outputs. This should result in // smaller FST if the outputs grow monotonically. But // if numbers are "random", false should give smaller // final size: final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(true); // Build an FST mapping BytesRef -> Long final Builder<Long> builder = new Builder<Long>(FST.INPUT_TYPE.BYTE1, outputs); final BytesRef a = new BytesRef("a"); final BytesRef b = new BytesRef("b"); final BytesRef c = new BytesRef("c"); builder.add(Util.toIntsRef(a, new IntsRef()), 17L); builder.add(Util.toIntsRef(b, new IntsRef()), 42L); builder.add(Util.toIntsRef(c, new IntsRef()), 13824324872317238L); final FST<Long> fst = builder.finish(); assertEquals(13824324872317238L, (long) Util.get(fst, c)); assertEquals(42, (long) Util.get(fst, b)); assertEquals(17, (long) Util.get(fst, a)); BytesRefFSTEnum<Long> fstEnum = new BytesRefFSTEnum<Long>(fst); BytesRefFSTEnum.InputOutput<Long> seekResult; seekResult = fstEnum.seekFloor(a); assertNotNull(seekResult); assertEquals(17, (long) seekResult.output); // goes to a seekResult = fstEnum.seekFloor(new BytesRef("aa")); assertNotNull(seekResult); assertEquals(17, (long) seekResult.output); // goes to b seekResult = fstEnum.seekCeil(new BytesRef("aa")); assertNotNull(seekResult); assertEquals(b, seekResult.input); assertEquals(42, (long) seekResult.output); assertEquals(Util.toIntsRef(new BytesRef("c"), new IntsRef()), Util.getByOutput(fst, 13824324872317238L)); assertNull(Util.getByOutput(fst, 47)); assertEquals(Util.toIntsRef(new BytesRef("b"), new IntsRef()), Util.getByOutput(fst, 42)); assertEquals(Util.toIntsRef(new BytesRef("a"), new IntsRef()), Util.getByOutput(fst, 17)); }
public void testSimple() throws Exception { // Get outputs -- passing true means FST will share // (delta code) the outputs. This should result in // smaller FST if the outputs grow monotonically. But // if numbers are "random", false should give smaller // final size: final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(); // Build an FST mapping BytesRef -> Long final Builder<Long> builder = new Builder<Long>(FST.INPUT_TYPE.BYTE1, outputs); final BytesRef a = new BytesRef("a"); final BytesRef b = new BytesRef("b"); final BytesRef c = new BytesRef("c"); builder.add(Util.toIntsRef(a, new IntsRef()), 17L); builder.add(Util.toIntsRef(b, new IntsRef()), 42L); builder.add(Util.toIntsRef(c, new IntsRef()), 13824324872317238L); final FST<Long> fst = builder.finish(); assertEquals(13824324872317238L, (long) Util.get(fst, c)); assertEquals(42, (long) Util.get(fst, b)); assertEquals(17, (long) Util.get(fst, a)); BytesRefFSTEnum<Long> fstEnum = new BytesRefFSTEnum<Long>(fst); BytesRefFSTEnum.InputOutput<Long> seekResult; seekResult = fstEnum.seekFloor(a); assertNotNull(seekResult); assertEquals(17, (long) seekResult.output); // goes to a seekResult = fstEnum.seekFloor(new BytesRef("aa")); assertNotNull(seekResult); assertEquals(17, (long) seekResult.output); // goes to b seekResult = fstEnum.seekCeil(new BytesRef("aa")); assertNotNull(seekResult); assertEquals(b, seekResult.input); assertEquals(42, (long) seekResult.output); assertEquals(Util.toIntsRef(new BytesRef("c"), new IntsRef()), Util.getByOutput(fst, 13824324872317238L)); assertNull(Util.getByOutput(fst, 47)); assertEquals(Util.toIntsRef(new BytesRef("b"), new IntsRef()), Util.getByOutput(fst, 42)); assertEquals(Util.toIntsRef(new BytesRef("a"), new IntsRef()), Util.getByOutput(fst, 17)); }