I have a search service that builds multiple Solr queries and uses an OR operator between each. However, I have a need that requires a boost to be added, regardless of user query input/filters. I want to multiply the score by 2 (boost), for every record where sortfield_s=Employed.
I am able to make this work in the Solr query screen, but am having difficulties translating it to C#.
Boost query in solr query screen:
boost=if(termfreq(sortfield_s,’Employed’),2,1)
Current C# search service:
private static ISolrQuery BuildSearchQuery(SolrQueryBuilder<ProviderItem> queryBuilder, string text)
{
if (string.IsNullOrWhiteSpace(text))
{
return SolrQuery.All;
}
var queries = new List<ISolrQuery>();
string[] terms = text.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
foreach (var term in terms)
{
queries.Add(queryBuilder.GetQueryByField(p => p.FullName, term).Boost(8.0));
queries.Add(queryBuilder.GetQueryByField(p => p.SpecialtyTerms, $""{term}"").Boost(4.0));
}
queries.Add(new SolrQuery("_val_:"if(termfreq(sortfield_s,'Employed'),2,1)""));
return new SolrMultipleCriteriaQuery(queries, SolrMultipleCriteriaQuery.Operator.OR);
}```
New contributor
Tcald4 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.