Search in sources :

Example 31 with Node

use of org.trie4j.Node in project trie4j by takawitter.

the class TailLOUDSTrie method build.

private void build(Trie orig, BvTree bvtree, TailArrayBuilder tailArrayBuilder, FastBitSet termBs, NodeListener listener) {
    this.bvtree = bvtree;
    this.size = orig.size();
    this.labels = new char[size];
    LinkedList<Node> queue = new LinkedList<Node>();
    int count = 0;
    if (orig.getRoot() != null)
        queue.add(orig.getRoot());
    while (!queue.isEmpty()) {
        Node node = queue.pollFirst();
        int index = count++;
        if (index >= labels.length) {
            extend();
        }
        listener.listen(node, index);
        if (node.isTerminate()) {
            termBs.set(index);
        } else if (termBs.size() <= index) {
            termBs.ensureCapacity(index);
        }
        for (Node c : node.getChildren()) {
            bvtree.appendChild();
            queue.offerLast(c);
        }
        bvtree.appendSelf();
        char[] letters = node.getLetters();
        if (letters.length == 0) {
            labels[index] = 0xffff;
            tailArrayBuilder.appendEmpty(index);
        } else {
            labels[index] = letters[0];
            if (letters.length >= 2) {
                tailArrayBuilder.append(index, letters, 1, letters.length - 1);
            } else {
                tailArrayBuilder.appendEmpty(index);
            }
        }
    }
    this.nodeSize = count;
}
Also used : TermIdNode(org.trie4j.TermIdNode) Node(org.trie4j.Node) LinkedList(java.util.LinkedList)

Aggregations

Node (org.trie4j.Node)31 Test (org.junit.Test)15 AbstractTermIdTrieTest (org.trie4j.AbstractTermIdTrieTest)13 Trie (org.trie4j.Trie)10 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)9 ByteArrayInputStream (java.io.ByteArrayInputStream)8 ByteArrayOutputStream (java.io.ByteArrayOutputStream)8 ObjectInputStream (java.io.ObjectInputStream)8 ObjectOutputStream (java.io.ObjectOutputStream)8 NodeVisitor (org.trie4j.NodeVisitor)8 PatriciaTrie (org.trie4j.patricia.PatriciaTrie)6 LinkedList (java.util.LinkedList)3 PrintWriter (java.io.PrintWriter)2 ArrayList (java.util.ArrayList)2 AbstractImmutableTrieTest (org.trie4j.AbstractImmutableTrieTest)2 LapTimer (org.trie4j.test.LapTimer)2 WikipediaTitles (org.trie4j.test.WikipediaTitles)2 Pair (org.trie4j.util.Pair)2 OutputStreamWriter (java.io.OutputStreamWriter)1 HashMap (java.util.HashMap)1