Example usage for org.apache.lucene.util.fst Util toDot

List of usage examples for org.apache.lucene.util.fst Util toDot

Introduction

In this page you can find the example usage for org.apache.lucene.util.fst Util toDot.

Prototype

public static <T> void toDot(FST<T> fst, Writer out, boolean sameRank, boolean labelStates) throws IOException 

Source Link

Document

Dumps an FST to a GraphViz's dot language description for visualization.

Usage

From source file:BuildFST.java

License:Apache License

@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) throws IOException {

    boolean numeric = true;
    boolean negative = false;
    for (int i = 0; i < args.length; i++) {
        int j = args[i].lastIndexOf('/');
        if (j != -1) {
            try {
                negative |= Long.parseLong(args[i].substring(j + 1)) < 0;
            } catch (NumberFormatException nfe) {
                numeric = false;//from  w w w .ja  va2s .c  o m
                break;
            }
        }
    }

    Outputs outputs;
    if (numeric) {
        if (negative) {
            throw new RuntimeException("can only handle numeric outputs >= 0");
        }
        outputs = PositiveIntOutputs.getSingleton();
    } else {
        outputs = ByteSequenceOutputs.getSingleton();
    }

    Pair<?>[] inputs = new Pair[args.length];
    for (int i = 0; i < args.length; i++) {
        int j = args[i].lastIndexOf('/');
        String input;
        Object output;
        if (j == -1) {
            output = outputs.getNoOutput();
            input = args[i];
        } else {
            input = args[i].substring(0, j);
            String outputString = args[i].substring(j + 1);
            if (numeric) {
                output = Long.parseLong(outputString);
            } else {
                output = new BytesRef(outputString);
            }
        }
        inputs[i] = new Pair(new BytesRef(input), output);
    }
    Arrays.sort(inputs);

    FST<?> fst;
    if (numeric) {
        Builder<Long> b = new Builder<Long>(FST.INPUT_TYPE.BYTE1, outputs);
        for (Pair pair : inputs) {
            IntsRefBuilder intsBuilder = new IntsRefBuilder();
            Util.toIntsRef(pair.input, intsBuilder);
            b.add(intsBuilder.get(), (Long) pair.output);
        }
        fst = b.finish();
    } else {
        Builder<BytesRef> b = new Builder<BytesRef>(FST.INPUT_TYPE.BYTE1, outputs);
        for (Pair pair : inputs) {
            IntsRefBuilder intsBuilder = new IntsRefBuilder();
            Util.toIntsRef(pair.input, intsBuilder);
            b.add(intsBuilder.get(), (BytesRef) pair.output);
        }
        fst = b.finish();
    }
    Util.toDot(fst, new PrintWriter(System.out), true, true);
}

From source file:com.shaie.fst.FstExample.java

License:Apache License

public static void main(String[] args) throws Exception {
    final CharsRef output = new CharsRef("color");
    final SynonymMap.Builder builder = new SynonymMap.Builder(true);
    builder.add(SynonymMap.Builder.join("blue".split(" "), new CharsRefBuilder()), output, true);
    builder.add(SynonymMap.Builder.join("green".split(" "), new CharsRefBuilder()), output, true);
    builder.add(SynonymMap.Builder.join("pale green".split(" "), new CharsRefBuilder()), output, true);
    builder.add(SynonymMap.Builder.join("pale blue".split(" "), new CharsRefBuilder()), output, true);
    builder.add(SynonymMap.Builder.join("dark sea green".split(" "), new CharsRefBuilder()), output, true);
    final SynonymMap synMap = builder.build();
    try (PrintWriter pw = new PrintWriter("d:/tmp/syns.dot");) {
        Util.toDot(synMap.fst, pw, true, true);
    }//from   w w  w.  java 2s .  c o  m
    System.out.println("Done!");
}