Skip to content

Instantly share code, notes, and snippets.

{
"docs": [{
"_indexname": "sitecore_master_index",
"__smallcreateddate": "2015-10-21T07:28:00Z",
"_content": "Roads? Where we're going, we don't need roads."
}]
}
namespace Sitecore.ContentSearch.SearchTypes
{
public class SearchResultItem : ISearchResult, IObjectIndexers
{
[IndexField("_content")]
public virtual string Content { get; set; }
[IndexField("__smallcreateddate")]
public virtual DateTime CreatedDate { get; set; }
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<contentSearch>
<!-- Configuration sections for indexes -->
<indexConfigurations>
<defaultSolrIndexConfiguration type="Sitecore.ContentSearch.SolrProvider.SolrIndexConfiguration, Sitecore.ContentSearch.SolrProvider">
<!-- DEFAULT FIELD MAPPING -->
<fieldMap type="Sitecore.ContentSearch.SolrProvider.SolrFieldMap, Sitecore.ContentSearch.SolrProvider">
<typeMatches hint="raw:AddTypeMatch">
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<!-- Code omitted... -->
<settings>
<!-- CONTENT SEARCH SEARCH MAX RESULTS
The max number of results that a query returns.
If a limit is not specified in the query (ie Take(10)) the search will use this value to set the number of rows returned.
It is important, for performance, that only the rows you need for a single request or page of results is returned.
-->
using (var context = ContentSearchManager.GetIndex("sitecore_master_index").CreateSearchContext())
{
var results = context.GetQueryable<SearchResultItem>()
.OrderBy(x => x.CreatedDate);
}
using (var context = ContentSearchManager.GetIndex("sitecore_master_index").CreateSearchContext())
{
var results = context.GetQueryable<SearchResultItem>()
.OrderBy(x => x.CreatedDate)
.ThenBy(x => x.Content);
}
using (var context = ContentSearchManager.GetIndex("sitecore_master_index").CreateSearchContext())
{
// Grab the first 20 search results
var results = context.GetQueryable<SearchResultItem>()
.Where(...)
.Skip(0).Take(20);
}
using (var context = ContentSearchManager.GetIndex("sitecore_master_index").CreateSearchContext())
{
var results = context.GetQueryable<SearchResultItem>()
.Where(...)
.Skip(0).Take(20)
.GetResults();
var numberOfSearchResults = results.TotalHits;
var searchResuls = results.Hits;
using (var context = ContentSearchManager.GetIndex("sitecore_master_index").CreateSearchContext())
{
// Create an initial predicate - use .True<T> since we'll be AND'ing this clause together
var filterPredicate = PredicateBuilder.True<SearchResultItem>();
// Ensure correct parent
filterPredicate = filterPredicate.And(x => x.Parent == ID.Parse("TheParentId"));
// Ensure correct path
filterPredicate = filterPredicate.And(x => x.Path.Contains("/Path/To/SearchResults"));
var queryable = context.GetQueryable<SearchResultItem>();
var fuzzyWithSimilarity = queryable.Where(x => x.Template.Like("Marty McFly", 0.3f));
var fuzzyWithNoSimilatiry = queryable.Where(x => x.Template.Like("Marty McFly"));
var fuzzyWithPhrase = queryable.Where(x => x.Template.Like("A martini. Shaken, not stirred.", 10));