List of usage examples for org.apache.lucene.util.fst Util toDot
public static <T> void toDot(FST<T> fst, Writer out, boolean sameRank, boolean labelStates) throws IOException
dot language description for visualization. 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!"); }