Ejemplo n.º 1
0
        /// <summary>
        /// Gets the search result.
        /// </summary>
        /// <param name="searchHits">The search hits.</param>
        /// <returns>Returns collection of search results</returns>
        public virtual IEnumerable <SearchResult> GetSearchResult(SearchHits searchHits)
        {
            List <SearchResult> result = new List <SearchResult>();

            foreach (SearchHit hit in searchHits.Slice(0))
            {
                SearchResult sr         = new SearchResult();
                Item         parentItem = null;
                Item         resultItem = null;

                if (hit.Document.GetField(BuiltinFields.CatalogItemUri) != null)
                {
                    string catalogUri = this.GetFieldValue(hit.Document, BuiltinFields.CatalogItemUri);
                    if (!string.IsNullOrEmpty(catalogUri))
                    {
                        parentItem = Database.GetItem(new ItemUri(catalogUri));
                        resultItem = Database.GetItem(new ItemUri(hit.Url));
                        if (resultItem != null && parentItem != null)
                        {
                            sr.ResultItem.ItemLink = this.ProductResolver.GetVirtualProductUrl(parentItem, resultItem);
                        }
                    }
                }
                else
                {
                    resultItem = Database.GetItem(new ItemUri(hit.Url));
                    if (resultItem != null)
                    {
                        ////remove items without visualization from search result.
                        if (resultItem.Visualization != null && resultItem.Visualization.Layout == null)
                        {
                            continue;
                        }

                        sr.ResultItem.ItemLink = LinkManager.GetItemUrl(resultItem);
                        parentItem             = resultItem.Parent;
                    }
                }

                if (parentItem != null && resultItem != null)
                {
                    sr.ResultItem.ItemTitle = this.GetItemTitle(resultItem);
                    sr.ResultItem.ItemUri   = hit.Url;

                    sr.ParentItem.ItemLink  = LinkManager.GetItemUrl(parentItem);
                    sr.ParentItem.ItemTitle = this.GetItemTitle(parentItem);
                    sr.ParentItem.ItemUri   = parentItem.Uri.ToString();
                }

                result.Add(sr);
            }

            return(result);
        }
        /// <summary>
        /// Gets the search result.
        /// </summary>
        /// <param name="searchHits">The search hits.</param>
        /// <returns>Returns collection of search results</returns>
        public virtual IEnumerable<SearchResult> GetSearchResult(SearchHits searchHits)
        {
            List<SearchResult> result = new List<SearchResult>();
              foreach (SearchHit hit in searchHits.Slice(0))
              {
            SearchResult sr = new SearchResult();
            Item parentItem = null;
            Item resultItem = null;

            if (hit.Document.GetField(BuiltinFields.CatalogItemUri) != null)
            {
              string catalogUri = this.GetFieldValue(hit.Document, BuiltinFields.CatalogItemUri);
              if (!string.IsNullOrEmpty(catalogUri))
              {
            parentItem = Database.GetItem(new ItemUri(catalogUri));
            resultItem = Database.GetItem(new ItemUri(hit.Url));
            if (resultItem != null && parentItem != null)
            {
              sr.ResultItem.ItemLink = this.ProductResolver.GetVirtualProductUrl(parentItem, resultItem);
            }
              }
            }
            else
            {
              resultItem = Database.GetItem(new ItemUri(hit.Url));
              if (resultItem != null)
              {
            ////remove items without visualization from search result.
            if (resultItem.Visualization != null && resultItem.Visualization.Layout == null)
            {
              continue;
            }

            sr.ResultItem.ItemLink = LinkManager.GetItemUrl(resultItem);
            parentItem = resultItem.Parent;
              }
            }

            if (parentItem != null && resultItem != null)
            {
              sr.ResultItem.ItemTitle = this.GetItemTitle(resultItem);
              sr.ResultItem.ItemUri = hit.Url;

              sr.ParentItem.ItemLink = LinkManager.GetItemUrl(parentItem);
              sr.ParentItem.ItemTitle = this.GetItemTitle(parentItem);
              sr.ParentItem.ItemUri = parentItem.Uri.ToString();
            }

            result.Add(sr);
              }

              return result;
        }