Exemple #1
0
        public void Run(IDictionary <string, string> args, ILogger logger)
        {
            var dataDirectory = args["dataDirectory"];
            var collection    = args["collection"];
            var documentId    = long.Parse(args["documentId"]);
            var select        = new HashSet <string>(args["select"].Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries));
            var collectionId  = collection.ToHash();
            var model         = new BagOfCharsModel();

            using (var sessionFactory = new SessionFactory(dataDirectory, logger))
                using (var documents = new DocumentStreamSession(sessionFactory))
                    using (var documentReader = new DocumentReader(collectionId, sessionFactory))
                    {
                        var doc = documents.ReadDocument((collectionId, documentId), select, documentReader);

                        foreach (var field in doc.Fields)
                        {
                            var tokens = model.Tokenize(field.Value.ToString());
                            var tree   = new VectorNode();

                            foreach (var token in tokens)
                            {
                                tree.MergeOrAdd(new VectorNode(token), model);
                            }

                            Console.WriteLine(field.Name);
                            Console.WriteLine(PathFinder.Visualize(tree));
                            Console.WriteLine(string.Join('\n', tokens));
                        }
                    }
        }
Exemple #2
0
        private static void RunInteractiveGraphBuilder(IModel <string> model)
        {
            var root = new VectorNode();

            while (true)
            {
                Console.WriteLine("enter text:");

                var command = Console.ReadLine();

                if (string.IsNullOrWhiteSpace(command))
                {
                    break;
                }

                var node = new VectorNode(model.Tokenize(command).First());

                root.MergeOrAdd(node, model);
            }

            Console.WriteLine(PathFinder.Visualize(root));

            while (true)
            {
                Console.WriteLine("enter query:");

                var command = Console.ReadLine();

                if (string.IsNullOrWhiteSpace(command))
                {
                    break;
                }

                var hit = PathFinder.ClosestMatch(root, model.Tokenize(command).First(), model);

                Console.WriteLine($"{hit.Score} {hit.Node}");
            }
        }
 public void ExecutePut <T>(VectorNode column, VectorNode node)
 {
     column.MergeOrAdd(node, this);
 }