-
-
Save RyanABailey/3f1ec8832e660c261cd4 to your computer and use it in GitHub Desktop.
Sitecore Search Implementation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public partial class SearchResults : System.Web.UI.UserControl | |
| { | |
| protected void Page_Load(object sender, EventArgs e) | |
| { | |
| var searchQuery = Request.QueryString["s"]; // search query | |
| var searchResults = new List<SearchResult>(); | |
| if (!string.IsNullOrEmpty(searchQuery)) | |
| { | |
| // sitecore search index | |
| var index = ContentSearchManager.GetIndex("CustomSearch"); | |
| using (var context = index.CreateSearchContext()) | |
| { | |
| var results = | |
| context.GetQueryable<MyResultItem>() | |
| .Where( | |
| resultItem => | |
| resultItem.PageTitle.Like(searchQuery) || | |
| resultItem.PageContent.Contains(searchQuery)) | |
| .GetResults(); | |
| foreach (var result in results) | |
| { | |
| var searchResult = new SearchResult(); | |
| var item = result.Document.GetItem(); | |
| searchResult.Title = item.Fields["Title"].ToString(); | |
| string content = Common.StripTags(item.Fields["Content"].ToString()); // get page content and strip HTML tags | |
| searchResult.Summary = Common.TruncateString(content, 300); // truncate content to first 300 characters | |
| searchResult.Link = Sitecore.Links.LinkManager.GetItemUrl(item); | |
| searchResults.Add(searchResult); | |
| } | |
| } | |
| // bind search results to frontend | |
| rptSearchResults.DataSource = searchResults; | |
| rptSearchResults.DataBind(); | |
| } | |
| else | |
| { | |
| // handle no search query | |
| } | |
| } | |
| /// <summary> | |
| /// Search results object for binding to frontend | |
| /// </summary> | |
| public class SearchResult | |
| { | |
| public string Title { get; set; } | |
| public string Summary { get; set; } | |
| public string Link { get; set; } | |
| } | |
| /// <summary> | |
| /// Custom sitecore search results item with required fields | |
| /// </summary> | |
| public class MyResultItem : SearchResultItem | |
| { | |
| [IndexField("Title")] | |
| public string PageTitle { get; set; } | |
| [IndexField("Content")] | |
| public string PageContent { get; set; } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment