Skip to content

Instantly share code, notes, and snippets.

Created February 12, 2015 12:57
Show Gist options
  • Save anonymous/6076f3fdd1e6e3f66b1d to your computer and use it in GitHub Desktop.
Save anonymous/6076f3fdd1e6e3f66b1d to your computer and use it in GitHub Desktop.
public List<T> Search<T>(SearchNodesSettings settings, SearchTypeConstraintSettings typeConstraintSettings)
{
var term = settings.SearchTerm.ToLower().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var criteria =
ExamineManager.Instance.SearchProviderCollection[settings.Index].CreateSearchCriteria(
UmbracoExamine.IndexTypes.Content, BooleanOperation.And);
IBooleanOperation filters;
var items = term.Select(t => Examine.LuceneEngine.SearchCriteria.LuceneSearchExtensions.Fuzzy(t, 0.5F)).ToArray();
if (typeConstraintSettings.Fields != null)
{
filters = criteria.GroupedOr(typeConstraintSettings.Fields, typeConstraintSettings.TypeConstraints);
filters = filters.And().GroupedOr(settings.FilterFields, items);
}
else
{
filters = criteria.GroupedOr(settings.FilterFields, items);
}
var results = ExamineManager.Instance.SearchProviderCollection[settings.Index].Search(filters.Compile()).Distinct();
return results.Select(searchResult => (T)Activator.CreateInstance(typeof(T), new object[] { searchResult })).ToList();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment