Skip to content

Instantly share code, notes, and snippets.

@RyanABailey
Created May 21, 2015 01:09
Show Gist options
  • Select an option

  • Save RyanABailey/3f1ec8832e660c261cd4 to your computer and use it in GitHub Desktop.

Select an option

Save RyanABailey/3f1ec8832e660c261cd4 to your computer and use it in GitHub Desktop.
Sitecore Search Implementation
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