public AdvancedSearchResult AdvancedSearch(string input) { input = input.ToLower(); var result = new AdvancedSearchResult(); var allCommandAliases = ListAllCommandAliases(); var possibleCommand = allCommandAliases.FirstOrDefault(x => x == input); var allModuleAlliases = ListAllModuleAliases(); var possibleModule = allModuleAlliases.FirstOrDefault(x => x == input); if (!string.IsNullOrEmpty(possibleModule) || possibleModule == possibleCommand && !string.IsNullOrEmpty(possibleModule)) { var module = Modules.FirstOrDefault(x => x.Aliases.Contains(possibleModule)); if (module is null) { module = Modules.FirstOrDefault(x => x.Name == possibleModule); } result = new AdvancedSearchResult(module, null); } else if (!string.IsNullOrEmpty(possibleCommand)) { var cmd = Commands.FirstOrDefault(x => x.Aliases.Contains(possibleCommand)); result = new AdvancedSearchResult(null, cmd); } else { throw new Exception("Could not find a category or command for the given input."); } return(result); }
public void SimpleSearch(String q) { String request; int resultCount = 500; // Количество выдаваемых результатов /* Формируем строку запросу к Oracle UCM */ if (string.IsNullOrWhiteSpace(q)) { request = "a"; } else { request = "xDocAnnotation <substring> `" + q.ToLower() + "` <OR> xDocAnnotation <substring> `" + q[0].ToString().ToUpper() + q.Substring(1).ToLower() + "` <OR> xDocCaption <substring> `" + q.ToLower() + "` <OR> xDocCaption <substring> `" + q[0].ToString().ToUpper() + q.Substring(1).ToLower() + "` <OR> xDocKeyWords <substring> `" + q.ToLower() + "` <OR> xDocKeyWords <substring> `" + q[0].ToString().ToUpper() + q.Substring(1).ToLower() + "` <OR> xDocAuthorsTPU_FIO <substring> `" + q.ToLower() + "` <OR> xDocAuthorsTPU_FIO <substring> `" + q[0].ToString().ToUpper() + q.Substring(1).ToLower() + "`"; } /* Отправляем запрос к сервису Oracle UCM */ AdvancedSearchResult searchResult = searchService.AdvancedSearch(request, "dCreateDate", "DESC", resultCount, true, extraProps); /* Обрабатываем ошибки при помощи исключений */ if (searchResult == null) { throw new Exception("Ваш запрос не был обработан сервером. Попробуйте позже"); } if (searchResult.StatusInfo.statusCode < 0) { throw new Exception(searchResult.StatusInfo.statusMessage); } if (searchResult.SearchInfo.totalRows.Equals(0) || (searchResult.SearchResults.Count() == 0)) { throw new Exception("По запросу \"" + q + "\" ничего не найдено. Попробуйте использовать другие ключевые слова."); } CountResults = searchResult.SearchResults.Count(); List <Document> documentsList = new List <Document>(CountResults); int countRec = CountRecords; if (CountResults < countRec) { countRec = CountResults; } for (int i = 0; i < countRec; i++) { documentsList.Add(new Document(searchResult.SearchResults[i])); } results = documentsList.AsQueryable(); }
public void SearchByLetter(String q, bool inTitle) { String request; String sortField; int resultCount = 200; // Количество выдаваемых результатов /* Формируем строку запросу к Oracle UCM */ if (string.IsNullOrWhiteSpace(q)) { q = "А"; } if (inTitle) { request = "dDocTitle <starts> `" + q.ToUpper() + "` <OR> dDocTitle <starts> `" + q.ToLower() + "`"; if (q.Equals("Е")) { request += " <OR> dDocTitle <starts> `Ё`"; } sortField = "dDocTitle"; } else { request = "xDocAuthorsTPU_FIO <starts> `" + q.ToUpper() + "` <OR> xDocAuthorsTPU_FIO <starts> `" + q.ToLower() + "` <OR> xDocCoAuthors <starts> `" + q.ToUpper() + "` <OR> xDocCoAuthors <starts> `" + q.ToLower() + "`"; sortField = "xDocAuthorsTPU_FIO"; } /* Отправляем запрос к сервису Oracle UCM */ AdvancedSearchResult searchResult = searchService.AdvancedSearch(request, sortField, "ASC", resultCount, true, extraProps); /* Обрабатываем ошибки при помощи исключений */ if (searchResult == null) { throw new Exception("Ваш запрос не был обработан сервером. Попробуйте позже"); } if (searchResult.StatusInfo.statusCode < 0) { throw new Exception(searchResult.StatusInfo.statusMessage); } if (searchResult.SearchInfo.totalRows.Equals(0) || (searchResult.SearchResults.Count() == 0)) { throw new Exception("По запросу \"" + q + "\" ничего не найдено. Попробуйте использовать другие ключевые слова."); } CountResults = searchResult.SearchResults.Count(); List <Document> documentsList = new List <Document>(CountResults); int countRec = CountRecords; if (CountResults < countRec) { countRec = CountResults; } for (int i = 0; i < countRec; i++) { documentsList.Add(new Document(searchResult.SearchResults[i])); } results = documentsList.AsQueryable(); }
public AdvancedSearchResult Search(string keyword, Category category, AdvancedSearchOptions advancedSearch) { return(AdvancedSearchResult.Search(keyword, category, advancedSearch)); }