Exemple #1
0
 private void MakeFromItem(SearchResultsItem item)
 {
     Name     = item.ShortName;
     FullName = item.Filename;
     Location = item.Location;
     Date     = item.Modified.ToString();
     Hits     = item.HitCount.ToString();
     Detail   = Hits + " hits " + Date;
 }
Exemple #2
0
        public ResultSet SearchAllArticles(string terms, string type, int page, string lang)
        {
            ResultSet results = new ResultSet();

            SetContextLanguage(lang);

            int blurbLimit         = 150; // TODO: move to constant
            SearchResultsItem item = Sitecore.Context.Database.GetItem(Constants.Pages.SearchResults);

            if (item != null && !string.IsNullOrEmpty(item.SearchResultSummaryCharacterLimit.Raw))
            {
                blurbLimit = item.SearchResultSummaryCharacterLimit.Integer;
            }

            int                  totalResults   = 0;
            List <Article>       articles       = SearchHelper.PerformArticleSearch(terms, type, page, out totalResults);
            List <SearchArticle> searchArticles = new List <SearchArticle>();

            foreach (Article article in articles)
            {
                DefaultArticlePageItem articleItem = article.GetItem();
                if (articleItem == null)
                {
                    continue;
                }

                // Handle cases such as invalid link format exception
                try
                {
                    var sa = new SearchArticle
                    {
                        Title     = Common.Helpers.TextHelper.HighlightSearchTitle(terms, HttpUtility.HtmlDecode(articleItem.ContentPage.PageTitle.Rendered)),
                        Url       = articleItem.GetUrl(),
                        Thumbnail = articleItem.GetArticleThumbnailUrl(230, 129),
                        Blurb     = articleItem.GetSearchResultBlurb(blurbLimit),
                        Type      = articleItem.GetArticleType()
                    };

                    searchArticles.Add(sa);
                }
                catch (Exception ex)
                {
                    Sitecore.Diagnostics.Log.Error("Error populating search result", ex, this);
                }
            }

            results.Articles     = searchArticles;
            results.TotalMatches = totalResults;

            results.HasMoreResults = HasMoreResults(page, Constants.SEARCH_RESULTS_ENTRIES_PER_PAGE, results.Articles.Count(), totalResults);

            return(results);
        }
Exemple #3
0
        public List <ResultModel> Search(string txt, string option)
        {
            List <ResultModel> lst = new List <ResultModel>();

            SearchJob sj1 = new SearchJob();

            sj1.BooleanConditions = txt;
            string[] ddlist;
            ddlist = Directory.GetDirectories(@"C:\Users\meharr\AppData\Local\dtSearch");
            sj1.IndexesToSearch.AddRange(ddlist);
            sj1.MaxFilesToRetrieve = 100;
            if (option == "stemming")
            {
                sj1.SearchFlags = SearchFlags.dtsSearchStemming;
            }
            else if (option == "phonic")
            {
                sj1.SearchFlags = SearchFlags.dtsSearchPhonic;
            }
            else if (option == "fuzzy")
            {
                sj1.Fuzziness   = 5;
                sj1.SearchFlags = SearchFlags.dtsSearchFuzzy;
            }
            sj1.Execute();

            SearchResults result = sj1.Results;

            for (int i = 0; i < result.Count; i++)
            {
                var tile = HighlightResult(i, result);
                int len  = tile.Length;
                int ind  = tile.IndexOf("Filename");
                tile = tile.Remove(ind, Math.Abs(ind - len));
                result.GetNthDoc(i);
                SearchResultsItem item = result.CurrentItem;

                ResultModel mod = new ResultModel();
                mod.DisplayName = item.DisplayName;
                mod.FileName    = item.Filename;
                mod.Title       = tile;
                mod.HitCount    = item.HitCount;
                lst.Add(mod);
            }
            return(lst);
        }
        private void ProcessResults(QueryResult resultInfo, SearchResults dtResult)
        {
            const int BatchSize = 5000; // Expose to config if needed

            if (!_skipLoadResult)
            {
                _logger.LoadStarted();
            }

            if (_orderBy)
            {
                _logger.SortStarted();
                dtResult.Sort(SortFlags.dtsSortBySortKey, "E-table_Docid");
                _logger.SortStopped();
            }

            SqlConnection con = null;

            try
            {
                con = new SqlConnection(_connString);
                con.Open();
                DataTable resultTbl = PrepareDataTable(con, resultInfo.ResultTable, resultInfo.SourceTable);

                resultTbl.BeginLoadData();
                DataRowCollection rows = resultTbl.Rows;

                bool returnFirstPageOnly = (_pageSize > 0);
                for (int i = 0; i < resultInfo.HitCount; ++i)
                {
                    if (returnFirstPageOnly && i == _pageSize)
                    {
                        break;
                    }

                    dtResult.GetNthDoc(i);
                    SearchResultsItem item = dtResult.CurrentItem;

                    DataRow dtRowTmp = resultTbl.NewRow();
                    dtRowTmp.ItemArray = new object[] { item.ShortName.Split(RowGuidDelimiter, StringSplitOptions.RemoveEmptyEntries)[0] };
                    rows.Add(dtRowTmp);

                    if (!_skipLoadResult && i > BatchSize)
                    {
                        UploadQueryResult(con, resultInfo.ResultTable, ref resultTbl);
                    }
                }

                if (!_skipLoadResult)
                {
                    UploadQueryResult(con, resultInfo.ResultTable, ref resultTbl);
                }

                resultTbl.EndLoadData();
                PostLoad(con, resultInfo.ResultTable);
            }
            finally
            {
                con.Close();
            }

            if (!_skipLoadResult)
            {
                _logger.LoadStopped();
            }
        }
Exemple #5
0
 public ResultsItem(SearchResultsItem item)
 {
     MakeFromItem(item);
 }