Package org.apache.lucene.util.fst
Class ListOfOutputs<T>
Wraps another Outputs implementation and encodes one or
more of its output values. You can use this when a single
input may need to map to more than one output,
maintaining order: pass the same input with a different
output by calling
Builder.add(IntsRef,Object) multiple
times. The builder will then combine the outputs using
the Outputs.merge(Object,Object) method.
The resulting FST may not be minimal when an input has more than one output, as this requires pushing all multi-output values to a final state.
NOTE: the only way to create multiple outputs is to
add the same input to the FST multiple times in a row. This is
how the FST maps a single input to multiple outputs (e.g. you
cannot pass a List<Object> to Builder.add(org.apache.lucene.util.IntsRef, T)). If
your outputs are longs, and you need at most 2, then use
UpToTwoPositiveIntOutputs instead since it stores
the outputs more compactly (by stealing a bit from each
long value).
NOTE: this cannot wrap itself (ie you cannot make an FST with List<List<Object>> outputs using this).
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionEg add("foo", "bar") -> "foobar"Eg common("foobar", "food") -> "foo"NOTE: this output is compared with == so you must ensure that all methods return the single object if it's really no outputoutputToString(Object output) Decode an output value previously written withOutputs.write(Object, DataOutput).Decode an output value previously written withOutputs.writeFinalOutput(Object, DataOutput).Eg subtract("foobar", "foo") -> "bar"toString()voidwrite(Object output, DataOutput out) Encode an output value into aDataOutput.voidwriteFinalOutput(Object output, DataOutput out) Encode an final node output value into aDataOutput.
-
Constructor Details
-
ListOfOutputs
-
-
Method Details
-
common
Description copied from class:OutputsEg common("foobar", "food") -> "foo" -
subtract
Description copied from class:OutputsEg subtract("foobar", "foo") -> "bar" -
add
Description copied from class:OutputsEg add("foo", "bar") -> "foobar" -
write
Description copied from class:OutputsEncode an output value into aDataOutput.- Specified by:
writein classOutputs<Object>- Throws:
IOException
-
writeFinalOutput
Description copied from class:OutputsEncode an final node output value into aDataOutput. By default this just callsOutputs.write(Object, DataOutput).- Overrides:
writeFinalOutputin classOutputs<Object>- Throws:
IOException
-
read
Description copied from class:OutputsDecode an output value previously written withOutputs.write(Object, DataOutput).- Specified by:
readin classOutputs<Object>- Throws:
IOException
-
readFinalOutput
Description copied from class:OutputsDecode an output value previously written withOutputs.writeFinalOutput(Object, DataOutput). By default this just callsOutputs.read(DataInput).- Overrides:
readFinalOutputin classOutputs<Object>- Throws:
IOException
-
getNoOutput
Description copied from class:OutputsNOTE: this output is compared with == so you must ensure that all methods return the single object if it's really no output- Specified by:
getNoOutputin classOutputs<Object>
-
outputToString
- Specified by:
outputToStringin classOutputs<Object>
-
merge
-
toString
-
asList
-