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)); } } }
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); }