Search in sources :

Example 21 with Node

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

the class Algorithms method contains.

public static boolean contains(Node root, String text) {
    if (text.length() == 0) {
        return root.getLetters().length == 0 && root.isTerminate();
    }
    int i = 0;
    Node node = root;
    while (node != null) {
        char[] letters = node.getLetters();
        if (letters.length > 0) {
            for (char c : letters) {
                if (c != text.charAt(i++))
                    return false;
            }
            if (i == text.length()) {
                return node.isTerminate();
            }
        }
        node = node.getChild(text.charAt(i));
    }
    return false;
}
Also used : Node(org.trie4j.Node)

Example 22 with Node

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

the class Algorithms method dump.

public static void dump(Node root, Writer writer) {
    final PrintWriter w = new PrintWriter(writer);
    final AtomicInteger c = new AtomicInteger();
    traverseByDepth(root, new NodeVisitor() {

        @Override
        public boolean visit(Node node, int nest) {
            for (int i = 0; i < nest; i++) {
                w.print(" ");
            }
            if (c.incrementAndGet() > 100) {
                w.println("... over 100 nodes");
                return false;
            }
            char[] letters = node.getLetters();
            if (letters != null && letters.length > 0) {
                w.print(letters);
            }
            if (node.isTerminate()) {
                w.print("*");
            }
            w.println();
            return true;
        }
    });
    w.flush();
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Node(org.trie4j.Node) PrintWriter(java.io.PrintWriter)

Example 23 with Node

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

the class LOUDSTrieTest method test_save_load.

@Test
public void test_save_load() throws Exception {
    String[] words = { "こんにちは", "さようなら", "おはよう", "おおきなかぶ", "おおやまざき" };
    Trie lt = trieWithWords(words);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    try {
        oos.writeObject(lt);
    } finally {
        oos.flush();
    }
    lt = (Trie) new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray())).readObject();
    for (String w : words) {
        Assert.assertTrue(lt.contains(w));
    }
    Assert.assertFalse(lt.contains("おやすみなさい"));
    StringBuilder b = new StringBuilder();
    Node[] children = lt.getRoot().getChildren();
    for (Node n : children) {
        char[] letters = n.getLetters();
        b.append(letters[0]);
    }
    Assert.assertEquals("おこさ", b.toString());
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) Node(org.trie4j.Node) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ObjectOutputStream(java.io.ObjectOutputStream) Trie(org.trie4j.Trie) ObjectInputStream(java.io.ObjectInputStream) AbstractImmutableTrieTest(org.trie4j.AbstractImmutableTrieTest) Test(org.junit.Test)

Example 24 with Node

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

the class LOUDSTrieTest method test.

@Test
public void test() throws Exception {
    String[] words = { "こんにちは", "さようなら", "おはよう", "おおきなかぶ", "おおやまざき" };
    Trie lt = trieWithWords(words);
    for (String w : words) {
        Assert.assertTrue(w, lt.contains(w));
    }
    Assert.assertFalse(lt.contains("おやすみなさい"));
    StringBuilder b = new StringBuilder();
    Node[] children = lt.getRoot().getChildren();
    for (Node n : children) {
        char[] letters = n.getLetters();
        b.append(letters[0]);
    }
    Assert.assertEquals("おこさ", b.toString());
}
Also used : Node(org.trie4j.Node) Trie(org.trie4j.Trie) AbstractImmutableTrieTest(org.trie4j.AbstractImmutableTrieTest) Test(org.junit.Test)

Example 25 with Node

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

the class LongsConstantTimeSelect0TailLOUDSTrieWithConcatTailArrayTest method test.

@Test
public void test() throws Exception {
    String[] words = { "こんにちは", "さようなら", "おはよう", "おおきなかぶ", "おおやまざき" };
    Trie trie = new PatriciaTrie();
    for (String w : words) trie.insert(w);
    Trie lt = new TailLOUDSTrie(trie);
    //		Algorithms.dump(lt.getRoot(), new OutputStreamWriter(System.out));
    for (String w : words) {
        Assert.assertTrue(w, lt.contains(w));
    }
    Assert.assertFalse(lt.contains("おやすみなさい"));
    StringBuilder b = new StringBuilder();
    Node[] children = lt.getRoot().getChildren();
    for (Node n : children) {
        char[] letters = n.getLetters();
        b.append(letters[0]);
    }
    Assert.assertEquals("おこさ", b.toString());
}
Also used : PatriciaTrie(org.trie4j.patricia.PatriciaTrie) Node(org.trie4j.Node) PatriciaTrie(org.trie4j.patricia.PatriciaTrie) Trie(org.trie4j.Trie) Test(org.junit.Test) AbstractTermIdTrieTest(org.trie4j.AbstractTermIdTrieTest)

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