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);
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
        }