I am trying to put together a very simple predicate builder - I only have one predicate for now. But as far as I see in the logs, it isn't applying any clauses at all. This is what I have:
using (var context = ContentSearchManager.GetIndex("resources_index").CreateSearchContext())
{
string searchTerm = "press";
var filterPredicate = PredicateBuilder.False<ResourceSearchResultItem>();
string[] terms = searchTerm.Split(' ');
var termPredicate = PredicateBuilder.False<ResourceSearchResultItem>();
foreach (string term in terms)
{
termPredicate = termPredicate.Or(p => p.BodyContent.Contains(term));
}
filterPredicate.Or(termPredicate);
IQueryable<ResourceSearchResultItem> query = context.GetQueryable<ResourceSearchResultItem>().Where(filterPredicate);
}
When I do this, the query in the logs is:
34184 00:02:23 INFO ExecuteQueryAgainstLucene (resources_index): -*:* - Filter :
It's basically applying no filters at all.
However, if I use just termPredicate in the .Where, like so:
IQueryable<ResourceSearchResultItem> query = context.GetQueryable<ResourceSearchResultItem>().Where(termPredicate);
...Then the query in the logs is just fine:
33564 00:08:25 INFO ExecuteQueryAgainstLucene (resources_index): SpanWildcardQuery(bodycontent:*press*) - Filter :
Not sure what I am missing. Any help would be appreciated!