public static void Main(string[] args) { string filepath = "t8.shakespeare.txt"; string indexpath = "index"; Document document; Token token; DocumentReader reader = new DocumentReader(filepath); ITokeniser tokeniser = new TokeniserFilter(new SimpleTokeniser()); SimpleIndexer indexer = new SimpleIndexer(); SimpleIndexWriter writer = new SimpleIndexWriter(indexpath); while ((document = reader.ReadDocument()) != null) { tokeniser.SetDocument(document); while ((token = tokeniser.GetToken()) != null) { indexer.indexToken(token); } } indexer.writeIndex(writer); IndexReader indexReader = new IndexReader(indexpath); VocabularyEntry entry = indexReader.GetVocabularyEntry("william"); string line = indexReader.GetPostingsListLine(entry.ByteOffset); Console.WriteLine(entry); Console.WriteLine(line); }
public static void Main(String[] args) { Console.OutputEncoding = Encoding.Unicode; // At first idea was to pass folder like "./Indexers" and "./Parsers" // Load all assemblies from that folders and find implementation of interfaces // After that we could load another implementations in runtime // And choose required implementation per request // But this produced several problems that are not required to solve // But would take more to implement IQueryParser parser = null; IFileIndexer indexer = null; var port = 1234; var options = new Options(); if (Parser.Default.ParseArguments(args, options)) { // -l "../../../AdvancedQueryParser/bin/{Debug/Release}/AdvancedQueryParser.dll" -p "TextIndexing.AdvancedQueryParser.IntersectionParser" parser = LoadImplementation <IQueryParser>(options.ParserLibrary, options.ParserType); indexer = LoadImplementation <IFileIndexer>(options.IndexerLibrary, options.IndexerType); port = options.Port; } if (parser == null) { parser = new SimpleParser(); } if (indexer == null) { indexer = new SimpleIndexer(); } Console.WriteLine("IFileIndexer implementation loaded: {0}", indexer.GetType()); Console.WriteLine("IQueryParser implementation loaded: {0}", parser.GetType()); Index.Instance.Init(parser, indexer); using (var server = new RESTServer(port: port.ToString())) { server.Start(); if (server.IsListening) { Console.WriteLine("Service started on port: {0}", server.Port); } else { Console.WriteLine("Failed to start service"); } Console.ReadKey(true); } }
public void Test_VocabularySize_Is_Expected() { var tokenizer = new EnglishTokenizer(); var serializer = new BinarySerializer <IndexSegment>(); var sut = new SimpleIndexer(tokenizer, serializer); var indexOnDiskPath = Path.Join(_testDirectory, "TestFixtures", "TestIndex"); sut.BuildIndexForArchive("./TestFixtures/Data.zip", indexOnDiskPath); sut.LoadIndexFromDisk(indexOnDiskPath); sut.GetIndexVocabularySize().Should().Be(17_860L); }