Skip to content

Instantly share code, notes, and snippets.

@lindstromhenrik
lindstromhenrik / gist:30391262cf166a07f451
Last active November 15, 2018 08:59
NestedTermsFacetExtensions for EPiServer Find
public static class NestedTermsFacetExtensions
{
public static ITypeSearch<TSource> NestedTermsFacetFor<TSource, TEnumerable>(
this ITypeSearch<TSource> search,
Expression<Func<TSource, IEnumerable<TEnumerable>>> enumerableFieldSelector, Expression<Func<TEnumerable, string>> itemFieldSelector)
{
return search.AddNestedTermsFacetFor(enumerableFieldSelector, itemFieldSelector, null);
}
public static ITypeSearch<TSource> NestedTermsFacetFor<TSource, TEnumerable>(
@lindstromhenrik
lindstromhenrik / NestedFacetExtensions.cs
Created April 12, 2016 08:41
NestedFacetExtensions. Extensions to the Find nested facets API
public static class NestedFacetExtensions
{
// Allow passing Action<NestedTermsFacetRequest> facetRequestAction (in order to set for example Size on the request)
public static ITypeSearch<TSource> TermsFacetFor<TSource, TListItem>
(this ITypeSearch<TSource> search,Expression<Func<TSource, IEnumerable<TListItem>>> nestedFieldSelector,
Expression<Func<TListItem, string>> itemFieldSelector,
Expression<Func<TListItem, Filter>> filterExpression = null,
Action<NestedTermsFacetRequest> facetRequestAction = null)
{
var facetFilter = NestedFilter.Create(search.Client.Conventions, nestedFieldSelector, filterExpression);
@lindstromhenrik
lindstromhenrik / Program.cs
Created September 19, 2017 02:30
NestPercolation
using Nest;
using System;
using System.Collections.Generic;
using System.Linq;
namespace NestPercolation
{
class Program
{
static void Main(string[] args)
@lindstromhenrik
lindstromhenrik / QueryStringSearchExtension.cs
Created April 4, 2017 10:23
InAnalyzedField-extension
public static class QueryStringSearchExtensions {
public static IQueriedSearch<TSource, QueryStringQuery> InAnalyzedField<TSource, TExistingQuery>(
this IQueriedSearch<TSource, TExistingQuery> search,
Expression<Func<TSource, string>> fieldSelector,
double? relativeImportance = null)
where TExistingQuery : QueryStringQuery
{
fieldSelector.ValidateNotNullArgument("fieldSelector");
return search.InField(search.Client.Conventions.FieldNameConvention.GetFieldNameForAnalyzed((Expression)fieldSelector), relativeImportance);
@lindstromhenrik
lindstromhenrik / HighlightExtensions.cs
Created March 14, 2017 14:08
Highlighting all attachment fields
public static class HighlightExtensions
{
public static IQueriedSearch<TSource, TExistingQuery> WithAttachmentHighlight<TSource, TExistingQuery>(
this IQueriedSearch<TSource, TExistingQuery> search, Action<FieldHighlightRequest> highlightAction = null)
where TExistingQuery : QueryStringQuery
{
return new Search<TSource, TExistingQuery>(search, context =>
{
var fieldName = "*$$attachment";
var request = new FieldHighlightRequest(fieldName);
@lindstromhenrik
lindstromhenrik / gist:9779858
Last active December 2, 2016 17:03
ThenByScore-extension for EPiServer Find
public static ITypeSearch<TSource> ThenByScore<TSource>(this ITypeSearch<TSource> search)
{
return new Search<TSource, IQuery>(search, context =>
context.RequestBody.Sort.Add(new Sorting("_score")));
}
@lindstromhenrik
lindstromhenrik / gist:8647566
Created January 27, 2014 12:17
Custom tags tracking using EPiServer Find CMS 6 R2
// At query time add appropriate tags
using EPiServer.Find.Framework.Statistics;
client.Search<>()
...
.Track(new string[] { "mytag" })
.GetResults()
// When fetching autocomplete/didyoumean/spellcheck through the REST endpoint
@lindstromhenrik
lindstromhenrik / gist:6699210
Last active December 23, 2015 21:49
List indices (docs/size)
$.ajax
({
type: "GET",
url: "https://server/_status",
dataType: 'jsonp'
}).done(function(data) {
for(indexName in data.indices)
{
$('#indices').append('<div><span>' + indexName + '</span>&nbsp;<span>' + data.indices[indexName].docs.num_docs + '</span>&nbsp;<span>' + data.indices[indexName].index.primary_size +'</span></div>');
}
@lindstromhenrik
lindstromhenrik / gist:5451390
Created April 24, 2013 11:10
Extension for using FilterHits with BuildFilter()
public static ITypeSearch<TSource> FilterHits<TSource>(this ITypeSearch<TSource> search, Filter filter)
{
return new Search<TSource, IQuery>(search, context =>
{
var filterToAdd = filter;
if (context.RequestBody.Filter.IsNotNull())
{
filterToAdd = filter & context.RequestBody.Filter;
}
context.RequestBody.Filter = filterToAdd;
@lindstromhenrik
lindstromhenrik / TermsFacetExtensions.cs
Last active December 12, 2015 00:18
TermsFacetFor<> - properties of objects in IEnumerables
public static class TermsFacetExtensions
{
public static ITypeSearch<TSource> TermsFacetFor<TSource, TListItem>(this ITypeSearch<TSource> search, Expression<Func<TSource, IEnumerable<TListItem>>> fieldListSelector, Expression<Func<TListItem, object>> fieldListItemSelector)
{
fieldListSelector.ValidateNotNullArgument("fieldListSelector");
fieldListItemSelector.ValidateNotNullArgument("fieldListItemSelector");
var facetName = fieldListSelector.GetFieldPath() + "." + fieldListItemSelector.GetFieldPath();
var fieldName = search.Client.Conventions.FieldNameConvention.GetFieldName(fieldListSelector) + "." + search.Client.Conventions.FieldNameConvention.GetFieldName(fieldListItemSelector);