00001 package de.aitools.aq.invertedindex.usage;
00002
00003 import java.io.File;
00004 import java.nio.ByteBuffer;
00005 import java.util.Scanner;
00006
00007 import com.google.protobuf.InvalidProtocolBufferException;
00008
00009 import de.aitools.aq.invertedindex.core.Configuration;
00010 import de.aitools.aq.invertedindex.core.Configuration.KeySorting;
00011 import de.aitools.aq.invertedindex.core.Indexer;
00012 import de.aitools.aq.invertedindex.core.Postlist;
00013 import de.aitools.aq.invertedindex.core.Searcher;
00014 import de.aitools.aq.invertedindex.usage.MyProtobufObject.Person;
00015 import de.aitools.aq.util.Memory;
00016 import de.aitools.aq.util.Record;
00017 import de.aitools.aq.value.Value;
00018 import de.aitools.aq.value.single.SingleBuffer;
00019 import de.aitools.aq.value.single.SingleString;
00020
00040 public class UsingSingleBuffer {
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062 public static void main(String[] args)
00063 throws InvalidProtocolBufferException {
00064
00065
00066
00067
00068 Configuration config = new Configuration();
00069 config.setIndexDirectory(new File("/path/to/your/index"));
00070 config.setKeySorting(KeySorting.UNSORTED);
00071 config.setMaxMemoryUsage(Memory.MB1024);
00072
00073
00074
00075
00076
00077 Class<SingleBuffer> valueClass = SingleBuffer.class;
00078 Indexer<SingleBuffer> indexer = Indexer.open(valueClass, config);
00079
00080
00081
00082
00083 for (int i = 0; i != Short.MAX_VALUE; ++i) {
00084
00085 String key = "key" + (i % Byte.MAX_VALUE);
00086
00087 Person.Builder builder = Person.newBuilder();
00088 builder.setName("John Doe #" + i);
00089 builder.setEmail("john.doe@uni-weimar.de #" + i);
00090 builder.setId(i);
00091 Person person = builder.build();
00092 SingleBuffer value = new SingleBuffer(person.toByteArray());
00093
00094 indexer.put(new Record<SingleBuffer>(key, value));
00095 }
00096
00097 indexer.index();
00098
00099
00100
00101
00102 Searcher<SingleBuffer> searcher = Searcher.open(valueClass, config);
00103
00104
00105
00106
00107 Scanner scanner = new Scanner(System.in);
00108 while (true) {
00109 System.out.print("Enter key (type 'q' to exit) : ");
00110 String key = scanner.nextLine();
00111 if (key.equals("q")) break;
00112 Postlist<SingleBuffer> postlist = searcher.search(key);
00113 if (postlist != null) {
00114 for (SingleBuffer value : postlist) {
00115 Person person = Person.parseFrom(value.getBuffer().array());
00116 System.out.println(person);
00117 }
00118 postlist.deleteNative();
00119 } else {
00120 System.out.println("Nothing found");
00121 }
00122 }
00123 searcher.close();
00124 }
00125
00126 }