public class TSTLookup extends Lookup
TSTAutocomplete
Lookup.LookupPriorityQueue, Lookup.LookupResult
Modifier and Type | Field and Description |
---|---|
(package private) TSTAutocomplete |
autocomplete |
private long |
count
Number of entries the lookup was built with
|
private static byte |
EQ_KID |
private static byte |
HAS_TOKEN |
private static byte |
HAS_VALUE |
private static byte |
HI_KID |
private static byte |
LO_KID |
(package private) TernaryTreeNode |
root |
private Directory |
tempDir |
private java.lang.String |
tempFileNamePrefix |
private static java.util.Comparator<BytesRef> |
utf8SortedAsUTF16SortOrder
TST uses UTF-16 sorting, so we need a suitable BytesRef comparator to do this.
|
CHARSEQUENCE_COMPARATOR
Constructor and Description |
---|
TSTLookup()
Creates a new TSTLookup with an empty Ternary Search Tree.
|
TSTLookup(Directory tempDir,
java.lang.String tempFileNamePrefix)
Creates a new TSTLookup, for building.
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(java.lang.CharSequence key,
java.lang.Object value)
Adds a new node if
key already exists,
otherwise replaces its value. |
void |
build(InputIterator iterator)
Builds up a new internal
Lookup representation based on the given InputIterator . |
private static boolean |
charSeqEquals(java.lang.CharSequence left,
java.lang.CharSequence right) |
java.lang.Object |
get(java.lang.CharSequence key)
Returns the value for the specified key, or null
if the key does not exist.
|
long |
getCount()
Get the number of entries the lookup was built with
|
boolean |
load(DataInput input)
Discard current lookup data and load it from a previously saved copy.
|
java.util.List<Lookup.LookupResult> |
lookup(java.lang.CharSequence key,
java.util.Set<BytesRef> contexts,
boolean onlyMorePopular,
int num)
Look up a key and return possible completion for this key.
|
long |
ramBytesUsed()
Returns byte size of the underlying TST
|
private void |
readRecursively(DataInput in,
TernaryTreeNode node) |
boolean |
store(DataOutput output)
Persist the constructed lookup data to a directory.
|
private void |
writeRecursively(DataOutput out,
TernaryTreeNode node) |
build, load, lookup, lookup, store
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getChildResources
TernaryTreeNode root
TSTAutocomplete autocomplete
private long count
private final Directory tempDir
private final java.lang.String tempFileNamePrefix
private static final java.util.Comparator<BytesRef> utf8SortedAsUTF16SortOrder
private static final byte LO_KID
private static final byte EQ_KID
private static final byte HI_KID
private static final byte HAS_TOKEN
private static final byte HAS_VALUE
public TSTLookup()
build(InputIterator)
public TSTLookup(Directory tempDir, java.lang.String tempFileNamePrefix)
build(InputIterator)
public void build(InputIterator iterator) throws java.io.IOException
Lookup
Lookup
representation based on the given InputIterator
.
The implementation might re-sort the data internally.public boolean add(java.lang.CharSequence key, java.lang.Object value)
key
already exists,
otherwise replaces its value.
This method always returns true.
public java.lang.Object get(java.lang.CharSequence key)
private static boolean charSeqEquals(java.lang.CharSequence left, java.lang.CharSequence right)
public java.util.List<Lookup.LookupResult> lookup(java.lang.CharSequence key, java.util.Set<BytesRef> contexts, boolean onlyMorePopular, int num)
Lookup
lookup
in class Lookup
key
- lookup key. Depending on the implementation this may be
a prefix, misspelling, or even infix.contexts
- contexts to filter the lookup by, or null if all contexts are allowed; if the suggestion contains any of the contexts, it's a matchonlyMorePopular
- return only more popular resultsnum
- maximum number of results to returnprivate void readRecursively(DataInput in, TernaryTreeNode node) throws java.io.IOException
java.io.IOException
private void writeRecursively(DataOutput out, TernaryTreeNode node) throws java.io.IOException
java.io.IOException
public boolean store(DataOutput output) throws java.io.IOException
Lookup
store
in class Lookup
output
- DataOutput
to write the data to.java.io.IOException
- when fatal IO error occurs.public boolean load(DataInput input) throws java.io.IOException
Lookup
public long ramBytesUsed()