public void IndexMergerShouldNotTakeIntoAccountExpressionVariableNameForComplexTypes() { var index1 = new Complex_Person_ByName_1(); var index2 = new Complex_Person_ByName_2(); var index3 = new Complex_Person_ByName_3(); var indexDefinition1 = index1.CreateIndexDefinition(); var indexDefinition2 = index2.CreateIndexDefinition(); var indexDefinition3 = index3.CreateIndexDefinition(); var merger = new IndexMerger( new Dictionary <string, IndexDefinition> { { indexDefinition1.Name, indexDefinition1 }, { indexDefinition2.Name, indexDefinition2 } }); var results = merger.ProposeIndexMergeSuggestions(); Assert.Equal(1, results.Suggestions.Count); Assert.Equal(1, results.Suggestions[0].CanDelete.Count); merger = new IndexMerger( new Dictionary <string, IndexDefinition> { { indexDefinition1.Name, indexDefinition1 }, { indexDefinition3.Name, indexDefinition3 } }); results = merger.ProposeIndexMergeSuggestions(); Assert.Equal(1, results.Suggestions.Count); Assert.Equal(1, results.Suggestions[0].CanDelete.Count); }
public void IndexMergerWithQueryExpressionSyntaxShouldNotTakeIntoAccountExpressionVariableName() { using (var store = GetDocumentStore()) { var index1 = new IndexDefinition { Name = "Users_ByName_1", Maps = { "from user in docs.Users select new { user.Name }" }, Type = IndexType.Map }; var index2 = new IndexDefinition { Name = "Users_ByName_2", Maps = { "from u in docs.Users select new { u.Name }" }, Type = IndexType.Map }; store.Maintenance.Send(new PutIndexesOperation(index1, index2)); var dictionary = new Dictionary <string, IndexDefinition> { { index1.Name, index1 }, { index2.Name, index2 } }; var merger = new IndexMerger(dictionary); var results = merger.ProposeIndexMergeSuggestions(); Assert.Equal(1, results.Suggestions.Count); Assert.Equal(1, results.Suggestions[0].CanDelete.Count); } }
public void IndexMergeWithField() { using (var store = GetDocumentStore()) { new UsersByName().Execute(store); new UsersByEmail().Execute(store); new UsersByAge().Execute(store); var index1 = store.Maintenance.Send(new GetIndexOperation("UsersByName")); var index2 = store.Maintenance.Send(new GetIndexOperation("UsersByEmail")); var index3 = store.Maintenance.Send(new GetIndexOperation("UsersByAge")); var dictionary = new Dictionary <string, IndexDefinition> { { index1.Name, index1 }, { index2.Name, index2 }, { index3.Name, index3 } }; var merger = new IndexMerger(dictionary); var results = merger.ProposeIndexMergeSuggestions(); Assert.Equal(1, results.Suggestions.Count); var suggestion = results.Suggestions[0]; var index = suggestion.MergedIndex; Assert.Equal(3, suggestion.CanMerge.Count); Assert.Equal(FieldIndexing.Search, index.Fields["Name"].Indexing); Assert.Equal(@"docs.Users.Select(doc=>new{Age=doc.Age ,Email=doc.Email ,Name=doc.Name })", index.Maps.First()); } }
public void IndexMergeWithField() { using (var store = NewDocumentStore()) { new UsersByName().Execute(store); new UsersByEmail().Execute(store); new UsersByAge().Execute(store); var index1 = store.DatabaseCommands.GetIndex("UsersByName"); var index2 = store.DatabaseCommands.GetIndex("UsersByEmail"); var index3 = store.DatabaseCommands.GetIndex("UsersByAge"); var dictionary = new Dictionary <int, IndexDefinition>() { { index1.IndexId, index1 }, { index2.IndexId, index2 }, { index3.IndexId, index3 } }; IndexMerger merger = new IndexMerger(dictionary); IndexMergeResults results = merger.ProposeIndexMergeSuggestions(); foreach (var suggestion in results.Suggestions) { var ind = suggestion.MergedIndex; Assert.Equal(FieldIndexing.Analyzed, ind.Indexes["Name"]); Assert.Equal(SortOptions.Int, ind.SortOptions["Age"]); } } }
public IndexMergeResults ProposeIndexMergeSuggestions() { var dic = new Dictionary <string, IndexDefinition>(); foreach (var index in GetIndexes()) { dic[index.Name] = index.GetIndexDefinition(); } var indexMerger = new IndexMerger(dic); return(indexMerger.ProposeIndexMergeSuggestions()); }
public void IndexMergeWithQueryExpressionSyntax() { using (var store = GetDocumentStore()) { var byName = new IndexDefinition { Name = "Users_ByName", Maps = { "from user in docs.Users select new { user.Name }" }, Type = IndexType.Map }; var byAge = new IndexDefinition { Name = "Users_ByAge", Maps = { "from u in docs.Users select new { u.Age }" }, Type = IndexType.Map }; var byEmail = new IndexDefinition { Name = "Users_ByEmail", Maps = { "from user in docs.Users select new { user.Email }" }, Type = IndexType.Map }; store.Maintenance.Send(new PutIndexesOperation(byName, byEmail, byAge)); var dictionary = new Dictionary <string, IndexDefinition> { { byName.Name, byName }, { byAge.Name, byAge }, { byEmail.Name, byEmail } }; var merger = new IndexMerger(dictionary); var results = merger.ProposeIndexMergeSuggestions(); Assert.Equal(1, results.Suggestions.Count); var suggestion = results.Suggestions[0]; var index = suggestion.MergedIndex; Assert.Equal(3, suggestion.CanMerge.Count); Assert.Equal(@"fromdocindocs.Users selectnew{Age=doc.Age ,Email=doc.Email ,Name=doc.Name }", index.Maps.First()); } }
public void IndexMergerShouldNotTakeIntoAccountExpressionVariableName() { var index1 = new Person_ByName_1(); var index2 = new Person_ByName_2(); var index3 = new Person_ByName_3(); var indexDefinition1 = index1.CreateIndexDefinition(); indexDefinition1.IndexId = 1; indexDefinition1.Name = index1.IndexName; var indexDefinition2 = index2.CreateIndexDefinition(); indexDefinition1.IndexId = 2; indexDefinition2.Name = index2.IndexName; var indexDefinition3 = index3.CreateIndexDefinition(); indexDefinition1.IndexId = 3; indexDefinition3.Name = index3.IndexName; var merger = new IndexMerger( new Dictionary <int, IndexDefinition> { { indexDefinition1.IndexId, indexDefinition1 }, { indexDefinition2.IndexId, indexDefinition2 } }); var results = merger.ProposeIndexMergeSuggestions(); Assert.Equal(1, results.Suggestions.Count); Assert.Equal(1, results.Suggestions[0].CanDelete.Count); merger = new IndexMerger( new Dictionary <int, IndexDefinition> { { indexDefinition1.IndexId, indexDefinition1 }, { indexDefinition3.IndexId, indexDefinition3 } }); results = merger.ProposeIndexMergeSuggestions(); Assert.Equal(1, results.Suggestions.Count); Assert.Equal(1, results.Suggestions[0].CanDelete.Count); }
public FileDedupe( FileDedupeConfig fileDedupeConfig, IndexedFileParser indexedFileParser, DirectoryAnalyser dedupeAnalyser, IndexWriter indexWriter, IndexerFactory indexerFactory, IndexMerger indexMerger, ILogger logger) { _fileDedupeConfig = fileDedupeConfig; _indexedFileParser = indexedFileParser; _directoryAnalyser = dedupeAnalyser; _indexWriter = indexWriter; _indexerFactory = indexerFactory; _indexMerger = indexMerger; _logger = logger; Console.WriteLine($"Loading Index: {_fileDedupeConfig.IndexFile}"); _index = indexedFileParser.Parse(_fileDedupeConfig.IndexFile); Console.WriteLine($"Loaded Index: {_fileDedupeConfig.IndexFile}"); }
public static async Task MainAsync(string[] args) { var config = ConfigReader.LoadFromFile("config.json"); var logger = new ConsoleLogger(); var dedupeAnalyser = new DirectoryAnalyser(); var indexWriter = new IndexWriter(); var parser = new IndexedFileParser(logger); var indexerFactory = new IndexerFactory(logger); var indexMerger = new IndexMerger(parser, indexWriter, logger); var fileDedupe = new FileDedupe( config, parser, dedupeAnalyser, indexWriter, indexerFactory, indexMerger, logger); fileDedupe.AnalyseDirectories(); }
public IndexMergeResults ProposeIndexMergeSuggestions() { var indexMerger = new IndexMerger(IndexDefinitions.ToDictionary(x => x.Key, x => x.Value)); return(indexMerger.ProposeIndexMergeSuggestions()); }
public IndexMergeResults ProposeIndexMergeSuggestions() { var indexMerger = new IndexMerger(IndexDefinitions.ToDictionary(x=>x.Key,x=>x.Value)); return indexMerger.ProposeIndexMergeSuggestions(); }