private static void BuildFieldQuery(MatchQueryDescriptor <VacancySummaryResponse> queryDescriptor, KeywordFactors searchFactors) { if (searchFactors.Boost.HasValue) { queryDescriptor.Boost(searchFactors.Boost.Value); } if (searchFactors.Fuzziness.HasValue) { queryDescriptor.Fuzziness(searchFactors.Fuzziness.Value); } if (searchFactors.FuzzinessPrefix.HasValue) { queryDescriptor.PrefixLength(searchFactors.FuzzinessPrefix.Value); } if (searchFactors.MatchAllKeywords) { queryDescriptor.Operator(Operator.And); } if (!string.IsNullOrWhiteSpace(searchFactors.MinimumMatch)) { queryDescriptor.MinimumShouldMatch(searchFactors.MinimumMatch); } if (searchFactors.PhraseProximity.HasValue) { queryDescriptor.Slop(searchFactors.PhraseProximity.Value); } }
private static void BuildFieldQuery(MatchQueryDescriptor <ApprenticeshipSummary> queryDescriptor, ISearchTermFactorsConfiguration searchFactors) { if (searchFactors.Boost.HasValue) { queryDescriptor.Boost(searchFactors.Boost.Value); } if (searchFactors.Fuzziness.HasValue) { queryDescriptor.Fuzziness(searchFactors.Fuzziness.Value); } if (searchFactors.FuzzyPrefix.HasValue) { queryDescriptor.PrefixLength(searchFactors.FuzzyPrefix.Value); } if (searchFactors.MatchAllKeywords) { queryDescriptor.Operator(Operator.And); } if (!string.IsNullOrWhiteSpace(searchFactors.MinimumMatch)) { queryDescriptor.MinimumShouldMatch(searchFactors.MinimumMatch); } if (searchFactors.PhraseProximity.HasValue) { queryDescriptor.Slop(searchFactors.PhraseProximity.Value); } }
public static MatchQueryDescriptor <T> BuildMatchQuery <T>(this MatchQueryDescriptor <T> matchQuery, Func <T, object> fieldSelector, string term, string queryName) where T : class { return(matchQuery.Field(p => fieldSelector) .Analyzer("standard") .Boost(1.1) .CutoffFrequency(0.001) .Query(term) .Fuzziness(Fuzziness.Auto) .Lenient() .FuzzyTranspositions() .MinimumShouldMatch(2) .Operator(Operator.Or) .FuzzyRewrite(MultiTermQueryRewrite.TopTermsBlendedFreqs(10)) .Name(queryName)); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var j = JObject.Load(reader); if (!j.HasValues) { return(null); } var firstProp = j.Properties().FirstOrDefault(); if (firstProp == null) { return(null); } var field = firstProp.Name; var jo = firstProp.Value.Value <JObject>(); if (jo == null) { return(null); } JToken v = null; string type = null; if (jo.TryGetValue("type", out v)) { type = v.Value <string>(); } IMatchQuery fq = null; if (type.IsNullOrEmpty()) { fq = new MatchQueryDescriptor <object>(); } else if (type == "phrase") { fq = new MatchPhraseQueryDescriptor <object>(); } else if (type == "phrase_prefix") { fq = new MatchPhrasePrefixQueryDescriptor <object>(); } else { return(null); } fq.Field = field; fq.Boost = GetPropValue <double?>(jo, "boost"); fq.Analyzer = GetPropValue <string>(jo, "analyzer"); fq.CutoffFrequency = GetPropValue <double?>(jo, "cutoff_frequency"); fq.Fuzziness = GetPropValue <double?>(jo, "fuzziness"); fq.Lenient = GetPropValue <bool?>(jo, "lenient"); fq.MaxExpansions = GetPropValue <int?>(jo, "max_expansions"); fq.PrefixLength = GetPropValue <int?>(jo, "prefix_length"); fq.Query = GetPropValue <string>(jo, "query"); fq.Slop = GetPropValue <int?>(jo, "slop"); var rewriteString = GetPropValue <string>(jo, "rewrite"); if (!rewriteString.IsNullOrEmpty()) { fq.Rewrite = rewriteString.ToEnum <RewriteMultiTerm>(); } var operatorString = GetPropValue <string>(jo, "operator"); if (!rewriteString.IsNullOrEmpty()) { fq.Operator = operatorString.ToEnum <Operator>(); } return(fq); }
private static MatchQueryDescriptor <ApprenticeshipSearchResult> BuildFieldQuery(MatchQueryDescriptor <ApprenticeshipSearchResult> queryDescriptor, SearchTermFactors searchFactors) { if (searchFactors.Boost.HasValue) { queryDescriptor.Boost(searchFactors.Boost.Value); } if (searchFactors.Fuzziness.HasValue) { queryDescriptor.Fuzziness(Fuzziness.EditDistance(searchFactors.Fuzziness.Value)); } if (searchFactors.FuzzyPrefix.HasValue) { queryDescriptor.PrefixLength(searchFactors.FuzzyPrefix.Value); } if (searchFactors.MatchAllKeywords) { queryDescriptor.Operator(Operator.And); } if (!string.IsNullOrWhiteSpace(searchFactors.MinimumMatch)) { queryDescriptor.MinimumShouldMatch(searchFactors.MinimumMatch); } return(queryDescriptor); }