org.apache.lucene.util.fst
Class ListOfOutputs<T>

java.lang.Object
  extended by org.apache.lucene.util.fst.Outputs<Object>
      extended by org.apache.lucene.util.fst.ListOfOutputs<T>

public final class ListOfOutputs<T>
extends Outputs<Object>

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).

WARNING: This API is experimental and might change in incompatible ways in the next release.

Constructor Summary
ListOfOutputs(Outputs<T> outputs)
           
 
Method Summary
 Object add(Object prefix, Object output)
           
 List<T> asList(Object output)
           
 Object common(Object output1, Object output2)
           
 Object getNoOutput()
           
 Object merge(Object first, Object second)
           
 String outputToString(Object output)
           
 Object read(DataInput in)
           
 Object readFinalOutput(DataInput in)
           
 Object subtract(Object object, Object inc)
           
 String toString()
           
 void write(Object output, DataOutput out)
           
 void writeFinalOutput(Object output, DataOutput out)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ListOfOutputs

public ListOfOutputs(Outputs<T> outputs)
Method Detail

common

public Object common(Object output1,
                     Object output2)
Specified by:
common in class Outputs<Object>

subtract

public Object subtract(Object object,
                       Object inc)
Specified by:
subtract in class Outputs<Object>

add

public Object add(Object prefix,
                  Object output)
Specified by:
add in class Outputs<Object>

write

public void write(Object output,
                  DataOutput out)
           throws IOException
Specified by:
write in class Outputs<Object>
Throws:
IOException

writeFinalOutput

public void writeFinalOutput(Object output,
                             DataOutput out)
                      throws IOException
Overrides:
writeFinalOutput in class Outputs<Object>
Throws:
IOException

read

public Object read(DataInput in)
            throws IOException
Specified by:
read in class Outputs<Object>
Throws:
IOException

readFinalOutput

public Object readFinalOutput(DataInput in)
                       throws IOException
Overrides:
readFinalOutput in class Outputs<Object>
Throws:
IOException

getNoOutput

public Object getNoOutput()
Specified by:
getNoOutput in class Outputs<Object>

outputToString

public String outputToString(Object output)
Specified by:
outputToString in class Outputs<Object>

merge

public Object merge(Object first,
                    Object second)
Overrides:
merge in class Outputs<Object>

toString

public String toString()
Overrides:
toString in class Object

asList

public List<T> asList(Object output)


Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.