protected void Page_Init(object sender, EventArgs e) { _ProductId = AlwaysConvert.ToInt(Request.QueryString["ProductId"]); _Product = ProductDataSource.Load(_ProductId); HiddenProductId.Value = _ProductId.ToString(); if (_Product == null) { ProductCaption.Visible = false; } else { ProductCaption.Text = string.Format(ProductCaption.Text, _Product.Name); } if (!Page.IsPostBack) { //CHECK FOR SEARCH CACE SearchCache.SearchCriteria criteria = SearchCache.GetCriteria(); if ((criteria != null) && (criteria.Arguments.ContainsKey("ShowApproved"))) { ListItem item = ShowApproved.Items.FindByValue(criteria.Arguments["ShowApproved"].ToString()); if (item != null) { ShowApproved.SelectedIndex = ShowApproved.Items.IndexOf(item); } ReviewGrid.PageIndex = criteria.PageIndex; ReviewGrid.DefaultSortDirection = criteria.SortDirection; ReviewGrid.DefaultSortExpression = criteria.SortExpression; } } }
public void Update(SearchCache searchCache) { if (_connection == null) { return; } var sql = "UPDATE SearchCache"; sql += " SET"; sql += " SearchResultsString = @SearchResultsString"; sql += " WHERE"; sql += " SourceText = @SourceText"; sql += " AND TargetLanguage = @TargetLanguage"; sql += " AND QueryString = @QueryString"; var cmdQuery = new SQLiteCommand(sql, _connection); cmdQuery.Parameters.Add(new SQLiteParameter("@SourceText", DbType.String)); cmdQuery.Parameters.Add(new SQLiteParameter("@TargetLanguage", DbType.String)); cmdQuery.Parameters.Add(new SQLiteParameter("@QueryString", DbType.String)); cmdQuery.Parameters.Add(new SQLiteParameter("@SearchResultsString", DbType.String)); cmdQuery.Parameters["@SourceText"].Value = searchCache.SourceText; cmdQuery.Parameters["@TargetLanguage"].Value = searchCache.TargetLanguage; cmdQuery.Parameters["@QueryString"].Value = searchCache.QueryString; cmdQuery.Parameters["@SearchResultsString"].Value = searchCache.SearchResultsString; cmdQuery.ExecuteNonQuery(); }
public static IEnumerable<int> Search(this TvdbHandler tvdbHandler, IFileSystem fileSystem, DirectoryInfoBase cacheDirectory, string term) { // Initalise cache if it does not exist. if (_searchCache == null) { _searchCache = new SearchCache(fileSystem, cacheDirectory); } // If not in cache then search online. if(!_searchCache.Contains(term)) { // HACK: TVDB fails on concurrent search, needs a lock to only allow one search. lock(_lock) { // Search. var results = tvdbHandler.SearchSeries(term); // Return null if no results found. if(results.Count==0) { return null; } // Set cache. _searchCache.Insert(term, results.Select(result => result.Id).ToList()); } } // Return series id. return _searchCache.Get(term); }
public override IList <ISearchResult> Search(string text, ILanguage source, ILanguage target, int maxResultsCount, SearchMode mode, bool targetRequired) { _entryModels.Clear(); _logger.Info("--> Try searching for segment"); var bodyModel = GetApiRequestBodyValues(source, target, text); var modelString = JsonConvert.SerializeObject(bodyModel); var activeProjectName = Utils.GetCurrentProjectName(); CacheService cacheService = null; if (!string.IsNullOrEmpty(activeProjectName)) { cacheService = new CacheService(activeProjectName); } if (cacheService != null) { _logger.Info("--> Try to get cache results"); var cachedResults = Task.Run(async() => await cacheService.GetCachedResults(text, target.Name, modelString)).Result; if (cachedResults != null && cachedResults.Count > 0) { CreateEntryTerms(cachedResults.ToList(), source, GetLanguages()); _logger.Info("--> Cache results found"); SubscribeToEntriesChangedEvent(text, source, target); return(cachedResults); } } var results = _searchService.GetTerms(modelString); if (results != null) { var termGroups = SortSearchResultsByPriority(text, GetTermResultGroups(results), source); results = RemoveDuplicateTerms(termGroups, source, target); results = MaxSearchResults(results, maxResultsCount); CreateEntryTerms(results, source, GetLanguages()); // add search to cache db var searchResults = new SearchCache { QueryString = modelString, SourceText = text, TargetLanguageName = target.Name }; if (cacheService != null) { _logger.Info("--> Try to add results in db"); Task.Run(async() => await cacheService.AddSearchResults(searchResults, results)); } } SubscribeToEntriesChangedEvent(text, source, target); return(results); }
public override IList <ISearchResult> Search(string text, ILanguage source, ILanguage target, int maxResultsCount, SearchMode mode, bool targetRequired) { ClearEntries(); _logger.Info("--> Try searching for segment"); var jsonBody = GetApiRequestBodyValues(source, target, text); var queryString = JsonConvert.SerializeObject(jsonBody); var canConnect = CacheProvider?.Connect(IATEApplication.ProjectsController?.CurrentProject); if (canConnect != null && (bool)canConnect) { _logger.Info("--> Try to get cache results"); var cachedResults = CacheProvider.GetCachedResults(text, target.Locale.Name, queryString); if (cachedResults != null && cachedResults.Count > 0) { CreateEntryTerms(cachedResults.ToList(), source, GetLanguages()); _logger.Info("--> Cache results found"); OnTermEntriesChanged(text, source, target); return(cachedResults); } } var config = IATEApplication.ProjectsController?.CurrentProject?.GetTermbaseConfiguration(); var results = _searchService.GetTerms(queryString, config?.TermRecognitionOptions?.SearchDepth ?? 500); if (results != null) { var termGroups = SortSearchResultsByPriority(text, GetTermResultGroups(results), source); results = RemoveDuplicateTerms(termGroups, source, target); results = MaxSearchResults(results, maxResultsCount); CreateEntryTerms(results, source, GetLanguages()); // add search to cache db var searchCache = new SearchCache { SourceText = text, TargetLanguage = target.Locale.Name, QueryString = queryString }; if (CacheProvider != null) { _logger.Info("--> Try to add results in db"); CacheProvider.AddSearchResults(searchCache, results); } } OnTermEntriesChanged(text, source, target); return(results); }
public ActionResult Search(string text, string page, string operation) { if (string.IsNullOrWhiteSpace(text)) { text = Request.QueryString["text"]; } if (string.IsNullOrWhiteSpace(page) || page == "0") { page = Request.QueryString["page"]; } if (string.IsNullOrWhiteSpace(text)) { return(new EmptyResult()); } int req_page; try { req_page = Convert.ToInt32(page); } catch (Exception) { req_page = 0; } SearchCache cache; if (globalCache.ContainsKey(text)) { cache = globalCache[text]; } else { cache = new SearchCache(text); globalCache.TryAdd(text, cache); } var list = cache.GetPage(req_page); if (req_page > 0) { ViewBag.Page = req_page; ViewBag.Text = text; ViewBag.Processing = cache.IsProcessing; ViewBag.LastPage = cache.LastPage; if (Request.QueryString["operation"] != null || operation != null) { return(PartialView("AjaxPageProductsView", list)); } return(PartialView("PageProductsView", list)); } return(PartialView("AllProductsView", list)); }
private async void Search(string searchText) { Analytics.TrackEvent("Search: " + searchText); try { _giphyServiceObj = FreshIOC.Container.Resolve <GiphyService>(); if (TrendingImages != null) { TrendingImages.Clear(); Settings.Offset = 0; } SearchCacheItem existingSearchCacheItem = SearchCache.FirstOrDefault((obj) => obj.SearchString == searchText); if (existingSearchCacheItem == null) { _searchCacheServiceObj.InsertSearchItem(new SearchCacheItem(searchText)); } else { // Update the search time so it appears first in the list. existingSearchCacheItem.TimeSearched = DateTime.Now; _searchCacheServiceObj.UpdateSearchItem(existingSearchCacheItem); } Giphy = await _giphyServiceObj.SearchGifs(searchText); if (Giphy != null) { List <GifDataItem> gifDataItems = CreateGifDataItemList(Giphy.Data.ToList()); gifDataItems.ForEach((gifDataItem) => { TrendingImages.Add(gifDataItem); }); //foreach (Datum datum in Giphy.Data) //{ // TrendingImages.Add(datum); //} } IsCancelButtonVisible = false; IsTrendingImagesPanelVisible = true; } catch (Exception exception) { MainThread.BeginInvokeOnMainThread ( () => { CoreMethods.DisplayAlert("Uh Oh", "Something bad happened: \n" + exception.Message, "Ok"); } ); } }
public SearchCache GetCache(string token) { SearchCache cache = caches[token]; var result = new SearchCache { Value = cache.Value, LifeTime = cache.LifeTime }; return(result); }
public string AddCache(IEnumerable <IFound> cache) { string token = Randomizer.GetString(TOKEN_LENGTH); var searchCache = new SearchCache { Value = cache, LifeTime = 0 }; caches.TryAdd(token, searchCache); return(token); }
public List <SearchCache> Get() { var searchCaches = new List <SearchCache>(); var sql = "SELECT * FROM SearchCache"; var cmdQuery = new SQLiteCommand(sql, _connection); var rdrSelect = cmdQuery.ExecuteReader(); try { if (rdrSelect.HasRows) { while (rdrSelect.Read()) { var searchCache = new SearchCache { SourceText = rdrSelect["SourceText"].ToString(), TargetLanguage = rdrSelect["TargetLanguage"].ToString(), QueryString = rdrSelect["QueryString"].ToString(), SearchResultsString = rdrSelect["SearchResultsString"].ToString() }; searchCaches.Add(searchCache); } } } catch (Exception ex) { _logger.Error($"{ex.Message}\n{ex.StackTrace}"); throw; } finally { if (rdrSelect != null) { if (!rdrSelect.IsClosed) { rdrSelect.Close(); } } } return(searchCaches); }
public void AddSearchResults(SearchCache searchCache, List <ISearchResult> searchResults) { if (searchResults == null) { return; } var serializedSearchResult = SerializeSearchResult(searchResults); if (string.IsNullOrEmpty(serializedSearchResult)) { return; } searchCache.SearchResultsString = serializedSearchResult; _databaseProvider?.Insert(searchCache); }
internal async Task <bool> RefreshSearchCache() { if (SearchCache != null) { SearchCache.Clear(); List <SearchCacheItem> searchCache = await _searchCacheServiceObj.GetSearchCache(); List <SearchCacheItem> orderedSearchCache = searchCache.OrderByDescending(x => x.TimeSearched).ToList <SearchCacheItem>(); foreach (SearchCacheItem searchItem in orderedSearchCache) { SearchCache.Add(searchItem); } return(true); } return(false); }
public async Task AddSearchResults(SearchCache searchCache, List <ISearchResult> iateSearchResults) { if (iateSearchResults == null) { return; } var serializedSearchResult = SerializeSearchResult(iateSearchResults); if (string.IsNullOrEmpty(serializedSearchResult)) { return; } searchCache.SearchResultsString = serializedSearchResult; _dbContext?.SearchCaches.Add(searchCache); if (_dbContext != null) { await _dbContext.SaveChangesAsync(); } }
public int Insert(SearchCache searchCache) { if (_connection == null) { return(-1); } var sql = "INSERT INTO SearchCache"; sql += " ("; sql += " SourceText"; sql += ", TargetLanguage"; sql += ", QueryString"; sql += ", SearchResultsString"; sql += " ) VALUES ("; sql += " @SourceText"; sql += ", @TargetLanguage"; sql += ", @QueryString"; sql += ", @SearchResultsString"; sql += " ); SELECT last_insert_rowid();"; var cmdQuery = new SQLiteCommand(sql, _connection); cmdQuery.Parameters.Add(new SQLiteParameter("@SourceText", DbType.String)); cmdQuery.Parameters.Add(new SQLiteParameter("@TargetLanguage", DbType.String)); cmdQuery.Parameters.Add(new SQLiteParameter("@QueryString", DbType.String)); cmdQuery.Parameters.Add(new SQLiteParameter("@SearchResultsString", DbType.String)); cmdQuery.Parameters["@SourceText"].Value = searchCache.SourceText; cmdQuery.Parameters["@TargetLanguage"].Value = searchCache.TargetLanguage; cmdQuery.Parameters["@QueryString"].Value = searchCache.QueryString; cmdQuery.Parameters["@SearchResultsString"].Value = searchCache.SearchResultsString; var id = Convert.ToInt32(cmdQuery.ExecuteScalar()); return(id); }
protected void ReviewGrid_DataBound(object sender, EventArgs e) { GridView grid = (GridView)sender; if (grid.Rows.Count > 0) { foreach (GridViewRow gvr in (grid.Rows)) { CheckBox cb = (CheckBox)gvr.FindControl("Selected"); ScriptManager.RegisterArrayDeclaration(grid, "CheckBoxIDs", String.Concat("'", cb.ClientID, "'")); } } else { ReviewActionPanel.Visible = false; } //CACHE THE SEARCH ARGUMENTS FOR NEXT VISIT SearchCache.SearchCriteria criteria = new SearchCache.SearchCriteria(); criteria.Arguments.Add("ShowApproved", ShowApproved.SelectedValue); criteria.PageIndex = grid.PageIndex; criteria.SortDirection = ReviewGrid.SortDirection; criteria.SortExpression = ReviewGrid.SortExpression; SearchCache.SetCriteria(criteria); }
public static DataTable GetSearchCacheList(int posttableid, int searchid, int pagesize, int pageindex, out int topiccount, SearchType searchType) { topiccount = 0; //DataTable searchCache = Discuz.Data.Searches.GetSearchCache(searchid); var searchCache = SearchCache.FindByID(searchid); if (searchCache == null) { return(new DataTable()); } //string input = searchCache.Rows[0][0].ToString(); var input = searchCache.Keywords; switch (searchType) { //case SearchType.AlbumTitle: //{ // Match match = Searches.regexAlbum.Match(input); // if (match.Success) // { // string currentPageTids = Searches.GetCurrentPageTids(match.Groups[1].Value, out topiccount, pagesize, pageindex); // if (Utils.StrIsNullOrEmpty(currentPageTids)) // { // return new DataTable(); // } // //if (AlbumPluginProvider.GetInstance() != null) // //{ // // return AlbumPluginProvider.GetInstance().GetResult(pagesize, currentPageTids); // //} // return new DataTable(); // } // break; //} //case SearchType.SpacePostTitle: //{ // Match match = Searches.regexSpacePost.Match(input); // if (match.Success) // { // string currentPageTids2 = Searches.GetCurrentPageTids(match.Groups[1].Value, out topiccount, pagesize, pageindex); // if (Utils.StrIsNullOrEmpty(currentPageTids2)) // { // return new DataTable(); // } // //if (SpacePluginProvider.GetInstance() != null) // //{ // // return SpacePluginProvider.GetInstance().GetResult(pagesize, currentPageTids2); // //} // return new DataTable(); // } // break; //} default: { var match = Searches.regexForumTopics.Match(input); if (match.Success) { string currentPageTids3 = Searches.GetCurrentPageTids(match.Groups[1].Value, out topiccount, pagesize, pageindex); if (Utils.StrIsNullOrEmpty(currentPageTids3)) { return(new DataTable()); } if (searchType == SearchType.DigestTopic) { return(Discuz.Data.Searches.GetSearchDigestTopicsList(pagesize, currentPageTids3)); } return(Discuz.Data.Searches.GetSearchTopicsList(pagesize, currentPageTids3)); } break; } } return(new DataTable()); }
public SearchCache Get(string sourceText, string targetLanguage, string queryString) { if (_connection == null) { return(null); } var sql = "SELECT * FROM SearchCache"; sql += " WHERE"; sql += " SourceText = @SourceText"; sql += " AND TargetLanguage = @TargetLanguage"; sql += " AND QueryString = @QueryString"; var cmdQuery = new SQLiteCommand(sql, _connection); cmdQuery.Parameters.Add(new SQLiteParameter("@SourceText", DbType.String)); cmdQuery.Parameters.Add(new SQLiteParameter("@TargetLanguage", DbType.String)); cmdQuery.Parameters.Add(new SQLiteParameter("@QueryString", DbType.String)); cmdQuery.Parameters["@SourceText"].Value = sourceText; cmdQuery.Parameters["@TargetLanguage"].Value = targetLanguage; cmdQuery.Parameters["@QueryString"].Value = queryString; var rdrSelect = cmdQuery.ExecuteReader(); try { if (rdrSelect.HasRows) { rdrSelect.Read(); var searchCache = new SearchCache { Id = Convert.ToInt32(rdrSelect["Id"]), SourceText = sourceText, TargetLanguage = targetLanguage, QueryString = queryString, SearchResultsString = rdrSelect["SearchResultsString"].ToString() }; return(searchCache); } } catch (Exception ex) { _logger.Error($"{ex.Message}\n{ex.StackTrace}"); throw; } finally { if (rdrSelect != null) { if (!rdrSelect.IsClosed) { rdrSelect.Close(); } } } return(null); }
protected override void ShowPage() { this.pagetitle = "搜索"; this.GetSearchType(); if (this.searchsubmit == 0 && !this.ispost) { if (!UserAuthority.Search(this.usergroupinfo, ref this.msg)) { base.AddErrLine(this.msg); return; } if (this.searchid <= 0) { return; } if (this.searchType == SearchType.Error) { base.AddErrLine("非法的参数信息"); return; } switch (this.searchType) { case SearchType.ByPoster: this.topiclist = SearchCache.GetSearchCacheList(this.searchid, 16, this.topicpageid, out this.topiccount, SearchType.TopicTitle); this.topicpageid = this.CalculateCurrentPage(this.topiccount, this.topicpageid, out this.topicpagecount); this.topicpagenumbers = ((this.topicpagecount > 1) ? Utils.GetPageNumbers(this.topicpageid, this.topicpagecount, "search.aspx?type=" + this.type + "&searchid=" + this.searchid + "&keyword=" + this.keyword + "&poster=" + this.poster, 8, "topicpage", "#1") : ""); return; } this.topiclist = SearchCache.GetSearchCacheList(this.searchid, 16, this.pageid, out this.topiccount, this.searchType); if (this.topiccount == 0) { base.AddErrLine("不存在的searchid"); return; } this.CalculateCurrentPage(); this.pagenumbers = ((this.pagecount > 1) ? Utils.GetPageNumbers(this.pageid, this.pagecount, "search.aspx?type=" + this.type + "&searchid=" + this.searchid + "&keyword=" + this.keyword + "&poster=" + this.poster, 8) : ""); return; } else { if (!UserAuthority.Search(this.userid, this.lastsearchtime, this.useradminid, this.usergroupinfo, ref this.msg)) { base.AddErrLine(this.msg); return; } if (this.searchType == SearchType.Error) { base.AddErrLine("非法的参数信息"); return; } this.searchpost = true; string searchforumid = DNTRequest.GetString("searchforumid").Trim(); int posterid = this.CheckSearchInfo(searchforumid); if (base.IsErr()) { return; } this.searchid = SearchCache.Search(this.userid, this.usergroupid, this.keyword, posterid, this.searchType, searchforumid, DNTRequest.GetInt("searchtime", 0), DNTRequest.GetInt("searchtimetype", 0), DNTRequest.GetInt("resultorder", 0), DNTRequest.GetInt("resultordertype", 0)); if (this.searchid > 0) { Response.Redirect(this.forumpath + "search.aspx?type=" + this.type + "&searchid=" + this.searchid + "&keyword=" + this.keyword + "&poster=" + this.poster, false); return; } base.AddErrLine("抱歉, 没有搜索到符合要求的记录"); return; } }
public List <Item> GetList(BadBeeFilter filter, bool brand, bool serie, bool model, bool drum, bool height, bool width, bool thick, bool system, bool rivet, bool wva, bool wvad, bool bb, bool year) { if (string.IsNullOrEmpty(GlobalVars.SearchCache.SearchKey) == false && GlobalVars.SearchCache.SearchKey.Equals(filter.SearchKey)) { Debug.WriteLine(DateTime.Now + " Cache search with key " + GlobalVars.SearchCache.SearchKey); return(GlobalVars.SearchCache.GetListResult); } else { var items = db.Item.Include("Model").Include("Model.Serie").Include("Model.Serie.Brand").Include("Model.Year").Include("Model.Year.DateFromFK") .Include("Model.Year.DateToFK").Include("BadBee").Include("BadBee.Wva").Include("BadBee.Systems").Include("BadBee.Dimension") .Include("BadBee.Dimension.Width").Include("BadBee.Dimension.Height").Include("BadBee.Dimension.Thickness").AsQueryable(); if (!string.IsNullOrEmpty(filter.Models) && !model) { items = items.Where(q => filter.ModelsList.Contains(q.Model.ModelId)); } if (!string.IsNullOrEmpty(filter.Series) && !serie) { items = items.Where(q => filter.SeriesList.Contains(q.Model.Serie.SerieId)); } if (!string.IsNullOrEmpty(filter.Brands) && !brand) { items = items.Where(q => filter.BrandsList.Contains(q.Model.Serie.Brand.BrandId)); } if (!string.IsNullOrEmpty(filter.Heights) && !height) { items = items.Where(q => filter.HeightsList.Contains(q.BadBee.Dimension.Height.HeightId)); } if (!string.IsNullOrEmpty(filter.Widths) && !width) { items = items.Where(q => filter.WidthsList.Contains(q.BadBee.Dimension.Width.WidthId)); } if (!string.IsNullOrEmpty(filter.Thicknesses) && !thick) { items = items.Where(q => filter.ThicknessesList.Contains(q.BadBee.Dimension.Thickness.ThicknessId)); } if (!string.IsNullOrEmpty(filter.Systems) && !system) { items = items.Where(q => filter.SystemsList.Contains(q.BadBee.Systems.SystemId)); } if (!string.IsNullOrEmpty(filter.Wvas) && !wva) { items = items.Where(q => filter.WvasList.Contains(q.BadBee.Wva.WvaId)); } if (!string.IsNullOrEmpty(filter.BadBeeNumbers) && !bb) { items = items.Where(q => filter.BadBeeNumbersList.Contains(q.BadBeeId)); } if (!string.IsNullOrEmpty(filter.DateYears) && !year) { items = items.Where(q => filter.DateYearsList.Contains(q.Model.Year.DateFromFK.DateId) || filter.DateYearsList.Contains(q.Model.Year.DateToFK.DateId)); } var searchCache = new SearchCache(); searchCache.GetListResult = items.ToList(); searchCache.SearchKey = filter.SearchKey; GlobalVars.SearchCache = searchCache; Debug.WriteLine(DateTime.Now + " New search with key " + GlobalVars.SearchCache.SearchKey); return(GlobalVars.SearchCache.GetListResult); } }
/// <summary> /// Сбросить поисковый кеш (то есть "забыть" последние позиции вхождений всех строк, когда либо найденных) /// </summary> public void resetAllSearch() { checkDisposed(); _searchCache = new SearchCache(); }