Skip to content

Instantly share code, notes, and snippets.

@pedroadaodev
Created May 25, 2016 14:07
Show Gist options
  • Save pedroadaodev/0d0414c4bde7ccfbbac226730e22b716 to your computer and use it in GitHub Desktop.
Save pedroadaodev/0d0414c4bde7ccfbbac226730e22b716 to your computer and use it in GitHub Desktop.
Umbraco Lucene Raw Query
ISearcher _searchProvider = ExamineManager.Instance.SearchProviderCollection["MySearcher"];
var criteria = _searchProvider.CreateSearchCriteria();
string rawQuery = "";
// REMOVE 2 length words and other special words
var words = searchString.Split(' ').Where(w => !"com,sem,dos,das,por,nos,nas".Contains(w.Trim())).Where(w => w.Trim().Length > 2);
if(!words.Any())
{
return searchResults;
}
// BUILD RAW QUERY
string oneFieldRawQuery = "(contentTitle:" + string.Join("~0.8 AND contentTitle:", words.Where(w => w.Trim().Length > 2)) + "~0.8)";
rawQuery = oneFieldRawQuery;
rawQuery += " OR " + oneFieldRawQuery.Replace("contentTitle:", " contentText:");
rawQuery += " OR " + oneFieldRawQuery.Replace("contentTitle:", " contentDescription:");
rawQuery += " OR " + oneFieldRawQuery.Replace("contentTitle:", " topIntroTitle:");
rawQuery += " OR " + oneFieldRawQuery.Replace("contentTitle:", " topIntroSubTitle:");
rawQuery += " OR " + oneFieldRawQuery.Replace("contentTitle:", " topIntroText:");
rawQuery += " OR " + oneFieldRawQuery.Replace("contentTitle:", " topIntrosummary:");
var results = _searchProvider.Search(criteria.RawQuery(rawQuery).OrderBy("nodeName").Compile());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment