IFilterContainer filter = new FilterContainer();
filter.Script = new ScriptFilter();
filter.Script.ScriptFile = " ingredient_well_with_filter";
filter.Script.Params = new Dictionary<string, object>();
filter.Script.Params["terms"] = searchedIngredientIds;
filter.Script.Params["field"] = SearchConstants.DocFields.Dish.MetaIngredients;
filter.Script.Params["countField"] = SearchConstants.DocFields.Dish.Ingredients;
filter.Script.Params["minTermCount"] = searchedIngredientIds.Count() + 1;
filter.Script.Params["maxTermCount"] = searchedIngredientIds.Count() + 3;
searchRequest.Query = new QueryContainer();
filter.Script = new ScriptFilter();
filter.Script.ScriptFile = " ingredient_well_with_filter";
filter.Script.Params = new Dictionary<string, object>();
filter.Script.Params["terms"] = searchedIngredientIds;
filter.Script.Params["field"] = SearchConstants.DocFields.Dish.MetaIngredients;
filter.Script.Params["countField"] = SearchConstants.DocFields.Dish.Ingredients;
filter.Script.Params["minTermCount"] = searchedIngredientIds.Count() + 1;
filter.Script.Params["maxTermCount"] = searchedIngredientIds.Count() + 3;
searchRequest.Query = new QueryContainer();
searchRequest.Query.Filtered = new FilteredQuery() { Filter = filter };
ingredient_well_with_filter.groovy
def score = 0;
def mCount = 0;
def uCount = 0;
for(term in terms){
if ( _index[field][term].tf() > 0){
mCount +=1
}
};
score = mCount;
uCount = doc[countField].size() - mCount;
if(mCount>0){
score = (50 - uCount) * 20 + mCount;
}
score;