in src/main/scala/datastore/ElasticsearchRepo.scala [187:214]
private def tagQueryParams(maybeTagId:Option[String], maybeSection:Option[String],
tagType:Option[String], maybeCategory:Option[String],
maybeReferences: Option[String], queryString:Option[String], fuzziness:Option[String]):Seq[Query] = {
Seq(
queryString.map(qs=>{
if(fuzziness.getOrElse("AUTO") != "OFF") {
//Why DisMax here? Because we want to include exact-matches as well, if they are relevant. E.g. FuzzyQuery on "politics" returns no results!
DisMaxQuery(Seq(
FuzzyQuery("webTitle", qs, fuzziness),
MatchQuery("webTitle", qs)
))
} else {
MatchQuery("webTitle", qs)
}
}),
maybeTagId.map(MatchQuery("id", _)),
maybeSection.map(MatchQuery("sectionId", _)),
tagType.map({
case "podcast" =>
ExistsQuery("podcast")
case tp: String =>
MatchQuery("type", tp)
}),
maybeSection.map(s=>termQuery("section",s)),
maybeCategory.map(cat=>termQuery("tagCategories", cat)),
maybeReferences.map(ref=>termQuery("references", ref)) //this is an object field - check how terming works!!
).collect({ case Some(param) => param })
}