1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2018 Make.org
4  *
5  * This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Affero General Public License as
7  *  published by the Free Software Foundation, either version 3 of the
8  *  License, or (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Affero General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Affero General Public License
16  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  *
18  */
19 
20 package org.make.core
21 package idea
22 
23 import com.sksamuel.elastic4s.{ElasticApi, ElasticDsl}
24 import com.sksamuel.elastic4s.requests.searches.queries.Query
25 import com.sksamuel.elastic4s.requests.searches.sort.{FieldSort, SortOrder}
26 import com.sksamuel.elastic4s.requests.searches.suggestion.Fuzziness
27 import org.make.core.technical.Pagination
28 import org.make.core.idea.indexed.IdeaElasticsearchFieldNames
29 import org.make.core.operation.OperationId
30 import org.make.core.question.QuestionId
31 import org.make.core.reference.Language
32 
33 /**
34   * The class holding the entire search query
35   *
36   * @param filters idea of search filters
37   * @param limit   number of items to fetch
38   * @param offset  number of items to skip
39   */
40 final case class IdeaSearchQuery(
41   filters: Option[IdeaSearchFilters] = None,
42   limit: Option[Pagination.Limit] = None,
43   offset: Option[Pagination.Offset] = None,
44   sort: Option[String] = None,
45   order: Option[Order] = None,
46   language: Option[Language] = None
47 )
48 
49 /**
50   * The class holding the filters
51   *
52   * @param name        Name to search into idea
53   * @param questionId  The questionId to filter
54   */
55 final case class IdeaSearchFilters(
56   name: Option[NameSearchFilter] = None,
57   questionId: Option[QuestionIdSearchFilter] = None,
58   status: Option[StatusSearchFilter] = None
59 )
60 
61 object IdeaSearchFilters extends ElasticDsl {
62 
63   def parse(
64     name: Option[NameSearchFilter] = None,
65     questionId: Option[QuestionIdSearchFilter] = None
66   ): Option[IdeaSearchFilters] = {
67 
68     (name, questionId) match {
69       case (None, None) => None
70       case _ =>
71         Some(IdeaSearchFilters(name, questionId))
72     }
73   }
74 
75   /**
76     * Build elasticsearch search filters from searchQuery
77     *
78     * @param ideaSearchQuery search query
79     *
80     * @return sequence of query definitions
81     */
82   def getIdeaSearchFilters(ideaSearchQuery: IdeaSearchQuery): Seq[Query] =
83     Seq(
84       buildNameSearchFilter(ideaSearchQuery),
85       buildQuestionIdSearchFilter(ideaSearchQuery),
86       buildStatusSearchFilter(ideaSearchQuery)
87     ).flatten
88 
89   def getSkipSearch(ideaSearchQuery: IdeaSearchQuery): Int =
90     ideaSearchQuery.offset.fold(0)(_.extractInt)
91 
92   def getLimitSearch(ideaSearchQuery: IdeaSearchQuery): Int =
93     ideaSearchQuery.limit.fold(10)(_.extractInt)
94 
95   def getSort(ideaSearchQuery: IdeaSearchQuery): Option[FieldSort] = {
96     val order = ideaSearchQuery.order.map(_.sortOrder)
97 
98     ideaSearchQuery.sort.map { sort =>
99       val sortFieldName: String = if (sort == "name") {
100         "name.keyword"
101       } else {
102         sort
103       }
104       FieldSort(field = sortFieldName, order = order.getOrElse(SortOrder.ASC))
105     }
106   }
107 
108   def buildNameSearchFilter(ideaSearchQuery: IdeaSearchQuery): Option[Query] = {
109     def languageOmission(boostedLanguage: String): Double =
110       if (ideaSearchQuery.language.contains(Language(boostedLanguage))) 1 else 0
111 
112     for {
113       filters                            <- ideaSearchQuery.filters
114       NameSearchFilter(text, maybeFuzzy) <- filters.name
115     } yield {
116       val fieldsBoosts: Map[String, Double] = Map(
117         IdeaElasticsearchFieldNames.name -> 3d,
118         IdeaElasticsearchFieldNames.nameFr -> 2d * languageOmission("fr"),
119         IdeaElasticsearchFieldNames.nameEn -> 2d * languageOmission("en"),
120         IdeaElasticsearchFieldNames.nameIt -> 2d * languageOmission("it"),
121         IdeaElasticsearchFieldNames.nameDe -> 2d * languageOmission("de"),
122         IdeaElasticsearchFieldNames.nameBg -> 2d * languageOmission("bg"),
123         IdeaElasticsearchFieldNames.nameCs -> 2d * languageOmission("cs"),
124         IdeaElasticsearchFieldNames.nameDa -> 2d * languageOmission("da"),
125         IdeaElasticsearchFieldNames.nameNl -> 2d * languageOmission("nl"),
126         IdeaElasticsearchFieldNames.nameFi -> 2d * languageOmission("fi"),
127         IdeaElasticsearchFieldNames.nameEl -> 2d * languageOmission("el"),
128         IdeaElasticsearchFieldNames.nameHu -> 2d * languageOmission("hu"),
129         IdeaElasticsearchFieldNames.nameLv -> 2d * languageOmission("lv"),
130         IdeaElasticsearchFieldNames.nameLt -> 2d * languageOmission("lt"),
131         IdeaElasticsearchFieldNames.namePt -> 2d * languageOmission("pt"),
132         IdeaElasticsearchFieldNames.nameRo -> 2d * languageOmission("ro"),
133         IdeaElasticsearchFieldNames.nameEs -> 2d * languageOmission("es"),
134         IdeaElasticsearchFieldNames.nameSv -> 2d * languageOmission("sv"),
135         IdeaElasticsearchFieldNames.nameHr -> 2d * languageOmission("hr"),
136         IdeaElasticsearchFieldNames.nameEt -> 2d * languageOmission("et"),
137         IdeaElasticsearchFieldNames.nameMt -> 2d * languageOmission("mt"),
138         IdeaElasticsearchFieldNames.nameSk -> 2d * languageOmission("sk"),
139         IdeaElasticsearchFieldNames.nameSl -> 2d * languageOmission("sl"),
140         IdeaElasticsearchFieldNames.nameUk -> 2d * languageOmission("uk"),
141         IdeaElasticsearchFieldNames.nameGeneral -> 1d
142       ).filter { case (_, boost) => boost != 0 }
143       maybeFuzzy match {
144         case Some(fuzzy) =>
145           ElasticApi
146             .should(
147               multiMatchQuery(text)
148                 .fields(fieldsBoosts)
149                 .boost(2f),
150               multiMatchQuery(text)
151                 .fields(fieldsBoosts)
152                 .fuzziness(fuzzy)
153                 .boost(1f)
154             )
155         case None =>
156           ElasticApi
157             .multiMatchQuery(text)
158             .fields(fieldsBoosts)
159       }
160     }
161   }
162 
163   def buildQuestionIdSearchFilter(ideaSearchQuery: IdeaSearchQuery): Option[Query] = {
164     ideaSearchQuery.filters.flatMap {
165       _.questionId match {
166         case Some(QuestionIdSearchFilter(questionId)) =>
167           Some(ElasticApi.termQuery(IdeaElasticsearchFieldNames.questionId, questionId.value))
168         case _ => None
169       }
170     }
171   }
172 
173   def buildStatusSearchFilter(ideaSearchQuery: IdeaSearchQuery): Option[Query] = {
174     val query: Option[Query] = ideaSearchQuery.filters.flatMap {
175       _.status.map {
176         case StatusSearchFilter(Seq(status)) =>
177           ElasticApi.termQuery(IdeaElasticsearchFieldNames.status, status.value)
178         case StatusSearchFilter(status) =>
179           ElasticApi.termsQuery(IdeaElasticsearchFieldNames.status, status.map(_.value))
180         case _ =>
181           ElasticApi.termsQuery(IdeaElasticsearchFieldNames.status, IdeaStatus.Activated.value)
182       }
183     }
184 
185     query match {
186       case None => None
187       case _    => query
188     }
189   }
190 
191 }
192 
193 final case class NameSearchFilter(text: String, fuzzy: Option[Fuzziness] = None)
194 final case class QuestionIdSearchFilter(questionId: QuestionId)
195 final case class OperationIdSearchFilter(operationId: OperationId)
196 final case class QuestionSearchFilter(question: String)
197 final case class StatusSearchFilter(status: Seq[IdeaStatus])
198 final case class ContextSearchFilter(
199   operation: Option[OperationId] = None,
200   source: Option[String] = None,
201   location: Option[String] = None,
202   question: Option[String] = None
203 )
204 final case class SlugSearchFilter(slug: String)
205 final case class IdeaSearchFilter(ideaId: IdeaId)
206 final case class Limit(value: Int)
207 
208 final case class Skip(value: Int)
Line Stmt Id Pos Tree Symbol Tests Code
69 4106 2297 - 2301 Select scala.None org.scalatest.testsuite scala.None
71 3376 2326 - 2367 Apply scala.Some.apply scala.Some.apply[org.make.core.idea.IdeaSearchFilters](IdeaSearchFilters.apply(name, questionId, IdeaSearchFilters.apply$default$3))
71 5494 2331 - 2366 Apply org.make.core.idea.IdeaSearchFilters.apply IdeaSearchFilters.apply(name, questionId, IdeaSearchFilters.apply$default$3)
71 2108 2331 - 2331 Select org.make.core.idea.IdeaSearchFilters.apply$default$3 IdeaSearchFilters.apply$default$3
84 1591 2638 - 2676 Apply org.make.core.idea.IdeaSearchFilters.buildNameSearchFilter org.scalatest.testsuite IdeaSearchFilters.this.buildNameSearchFilter(ideaSearchQuery)
85 463 2684 - 2728 Apply org.make.core.idea.IdeaSearchFilters.buildQuestionIdSearchFilter org.scalatest.testsuite IdeaSearchFilters.this.buildQuestionIdSearchFilter(ideaSearchQuery)
86 3776 2736 - 2776 Apply org.make.core.idea.IdeaSearchFilters.buildStatusSearchFilter org.scalatest.testsuite IdeaSearchFilters.this.buildStatusSearchFilter(ideaSearchQuery)
87 1731 2783 - 2783 TypeApply scala.Predef.$conforms org.scalatest.testsuite scala.Predef.$conforms[Option[com.sksamuel.elastic4s.requests.searches.queries.Query]]
87 5091 2627 - 2790 ApplyToImplicitArgs scala.collection.IterableOps.flatten org.scalatest.testsuite scala.`package`.Seq.apply[Option[com.sksamuel.elastic4s.requests.searches.queries.Query]](IdeaSearchFilters.this.buildNameSearchFilter(ideaSearchQuery), IdeaSearchFilters.this.buildQuestionIdSearchFilter(ideaSearchQuery), IdeaSearchFilters.this.buildStatusSearchFilter(ideaSearchQuery)).flatten[com.sksamuel.elastic4s.requests.searches.queries.Query](scala.Predef.$conforms[Option[com.sksamuel.elastic4s.requests.searches.queries.Query]])
90 5609 2857 - 2901 Apply scala.Option.fold org.scalatest.testsuite ideaSearchQuery.offset.fold[Int](0)(((x$1: org.make.core.technical.Pagination.Offset) => x$1.extractInt))
90 3111 2885 - 2886 Literal <nosymbol> 0
90 2121 2888 - 2900 Select org.make.core.technical.Pagination.extractInt org.scalatest.testsuite x$1.extractInt
93 1646 3000 - 3012 Select org.make.core.technical.Pagination.extractInt org.scalatest.testsuite x$2.extractInt
93 3389 2996 - 2998 Literal <nosymbol> 10
93 416 2969 - 3013 Apply scala.Option.fold org.scalatest.testsuite ideaSearchQuery.limit.fold[Int](10)(((x$2: org.make.core.technical.Pagination.Limit) => x$2.extractInt))
96 3788 3128 - 3139 Select org.make.core.Order.sortOrder org.scalatest.testsuite x$3.sortOrder
96 2001 3102 - 3140 Apply scala.Option.map org.scalatest.testsuite ideaSearchQuery.order.map[com.sksamuel.elastic4s.requests.searches.sort.SortOrder](((x$3: org.make.core.Order) => x$3.sortOrder))
98 1587 3146 - 3380 Apply scala.Option.map org.scalatest.testsuite ideaSearchQuery.sort.map[com.sksamuel.elastic4s.requests.searches.sort.FieldSort](((sort: String) => { val sortFieldName: String = if (sort.==("name")) "name.keyword" else sort; { <artifact> val x$1: String = sortFieldName; <artifact> val x$2: com.sksamuel.elastic4s.requests.searches.sort.SortOrder = order.getOrElse[com.sksamuel.elastic4s.requests.searches.sort.SortOrder](com.sksamuel.elastic4s.requests.searches.sort.SortOrder.ASC); <artifact> val x$3: Option[Any] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$2; <artifact> val x$4: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$3; <artifact> val x$5: Option[com.sksamuel.elastic4s.requests.searches.queries.Query] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$4; <artifact> val x$6: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$5; <artifact> val x$7: Option[com.sksamuel.elastic4s.requests.searches.sort.SortMode] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$6; <artifact> val x$8: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$8; <artifact> val x$9: Option[com.sksamuel.elastic4s.requests.searches.sort.NestedSort] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$9; com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply(x$1, x$3, x$4, x$5, x$6, x$7, x$2, x$8, x$9) } }))
99 5023 3219 - 3233 Apply java.lang.Object.== org.scalatest.testsuite sort.==("name")
100 2069 3245 - 3259 Block <nosymbol> org.scalatest.testsuite "name.keyword"
100 3305 3245 - 3259 Literal <nosymbol> org.scalatest.testsuite "name.keyword"
102 5617 3283 - 3287 Ident org.make.core.idea.IdeaSearchFilters.sort sort
104 3935 3302 - 3302 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$3 org.scalatest.testsuite com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$3
104 5200 3302 - 3302 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$5 org.scalatest.testsuite com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$5
104 3229 3302 - 3302 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$6 org.scalatest.testsuite com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$6
104 3399 3359 - 3372 Select com.sksamuel.elastic4s.requests.searches.sort.SortOrder.ASC com.sksamuel.elastic4s.requests.searches.sort.SortOrder.ASC
104 2008 3302 - 3302 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$4 org.scalatest.testsuite com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$4
104 3655 3302 - 3374 Apply com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply org.scalatest.testsuite com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply(x$1, x$3, x$4, x$5, x$6, x$7, x$2, x$8, x$9)
104 5623 3302 - 3302 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$9 org.scalatest.testsuite com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$9
104 595 3302 - 3302 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$2 org.scalatest.testsuite com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$2
104 1576 3343 - 3373 Apply scala.Option.getOrElse org.scalatest.testsuite order.getOrElse[com.sksamuel.elastic4s.requests.searches.sort.SortOrder](com.sksamuel.elastic4s.requests.searches.sort.SortOrder.ASC)
104 2258 3302 - 3302 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$8 org.scalatest.testsuite com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$8
110 4883 3571 - 3596 Apply org.make.core.reference.Language.apply org.make.core.reference.Language.apply(boostedLanguage)
110 2060 3606 - 3607 Block <nosymbol> 0.0
110 3244 3606 - 3607 Literal <nosymbol> 0.0
110 2016 3599 - 3600 Literal <nosymbol> 1.0
110 3771 3537 - 3597 Apply scala.Option.contains ideaSearchQuery.language.contains[org.make.core.reference.Language](org.make.core.reference.Language.apply(boostedLanguage))
110 5156 3599 - 3600 Block <nosymbol> 1.0
113 3197 3613 - 6155 Apply scala.Option.flatMap org.scalatest.testsuite ideaSearchQuery.filters.flatMap[com.sksamuel.elastic4s.requests.searches.queries.Query](((filters: org.make.core.idea.IdeaSearchFilters) => filters.name.withFilter(((check$ifrefutable$1: org.make.core.idea.NameSearchFilter) => (check$ifrefutable$1: org.make.core.idea.NameSearchFilter @unchecked) match { case (text: String, fuzzy: Option[com.sksamuel.elastic4s.requests.searches.suggestion.Fuzziness]): org.make.core.idea.NameSearchFilter((text @ _), (maybeFuzzy @ _)) => true case _ => false })).map[com.sksamuel.elastic4s.requests.searches.queries.Query](((x$4: org.make.core.idea.NameSearchFilter) => (x$4: org.make.core.idea.NameSearchFilter @unchecked) match { case (text: String, fuzzy: Option[com.sksamuel.elastic4s.requests.searches.suggestion.Fuzziness]): org.make.core.idea.NameSearchFilter((text @ _), (maybeFuzzy @ _)) => { val fieldsBoosts: Map[String,Double] = scala.Predef.Map.apply[String, Double](scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.name).->[Double](3.0), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFr).->[Double](2.0.*(languageOmission("fr"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEn).->[Double](2.0.*(languageOmission("en"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameIt).->[Double](2.0.*(languageOmission("it"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDe).->[Double](2.0.*(languageOmission("de"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameBg).->[Double](2.0.*(languageOmission("bg"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameCs).->[Double](2.0.*(languageOmission("cs"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDa).->[Double](2.0.*(languageOmission("da"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameNl).->[Double](2.0.*(languageOmission("nl"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFi).->[Double](2.0.*(languageOmission("fi"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEl).->[Double](2.0.*(languageOmission("el"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHu).->[Double](2.0.*(languageOmission("hu"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLv).->[Double](2.0.*(languageOmission("lv"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLt).->[Double](2.0.*(languageOmission("lt"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.namePt).->[Double](2.0.*(languageOmission("pt"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameRo).->[Double](2.0.*(languageOmission("ro"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEs).->[Double](2.0.*(languageOmission("es"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSv).->[Double](2.0.*(languageOmission("sv"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHr).->[Double](2.0.*(languageOmission("hr"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEt).->[Double](2.0.*(languageOmission("et"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameMt).->[Double](2.0.*(languageOmission("mt"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSk).->[Double](2.0.*(languageOmission("sk"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSl).->[Double](2.0.*(languageOmission("sl"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameUk).->[Double](2.0.*(languageOmission("uk"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameGeneral).->[Double](1.0)).filter(((x0$1: (String, Double)) => x0$1 match { case (_1: String, _2: Double): (String, Double)(_, (boost @ _)) => boost.!=(0) })); maybeFuzzy match { case (value: com.sksamuel.elastic4s.requests.searches.suggestion.Fuzziness): Some[com.sksamuel.elastic4s.requests.searches.suggestion.Fuzziness]((fuzzy @ _)) => com.sksamuel.elastic4s.ElasticApi.should(IdeaSearchFilters.this.multiMatchQuery(text).fields(fieldsBoosts).boost(2.0), IdeaSearchFilters.this.multiMatchQuery(text).fields(fieldsBoosts).fuzziness(fuzzy).boost(1.0)) case scala.None => com.sksamuel.elastic4s.ElasticApi.multiMatchQuery(text).fields(fieldsBoosts) } } }))))
114 4177 3693 - 6155 Apply scala.Option.WithFilter.map filters.name.withFilter(((check$ifrefutable$1: org.make.core.idea.NameSearchFilter) => (check$ifrefutable$1: org.make.core.idea.NameSearchFilter @unchecked) match { case (text: String, fuzzy: Option[com.sksamuel.elastic4s.requests.searches.suggestion.Fuzziness]): org.make.core.idea.NameSearchFilter((text @ _), (maybeFuzzy @ _)) => true case _ => false })).map[com.sksamuel.elastic4s.requests.searches.queries.Query](((x$4: org.make.core.idea.NameSearchFilter) => (x$4: org.make.core.idea.NameSearchFilter @unchecked) match { case (text: String, fuzzy: Option[com.sksamuel.elastic4s.requests.searches.suggestion.Fuzziness]): org.make.core.idea.NameSearchFilter((text @ _), (maybeFuzzy @ _)) => { val fieldsBoosts: Map[String,Double] = scala.Predef.Map.apply[String, Double](scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.name).->[Double](3.0), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFr).->[Double](2.0.*(languageOmission("fr"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEn).->[Double](2.0.*(languageOmission("en"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameIt).->[Double](2.0.*(languageOmission("it"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDe).->[Double](2.0.*(languageOmission("de"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameBg).->[Double](2.0.*(languageOmission("bg"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameCs).->[Double](2.0.*(languageOmission("cs"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDa).->[Double](2.0.*(languageOmission("da"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameNl).->[Double](2.0.*(languageOmission("nl"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFi).->[Double](2.0.*(languageOmission("fi"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEl).->[Double](2.0.*(languageOmission("el"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHu).->[Double](2.0.*(languageOmission("hu"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLv).->[Double](2.0.*(languageOmission("lv"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLt).->[Double](2.0.*(languageOmission("lt"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.namePt).->[Double](2.0.*(languageOmission("pt"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameRo).->[Double](2.0.*(languageOmission("ro"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEs).->[Double](2.0.*(languageOmission("es"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSv).->[Double](2.0.*(languageOmission("sv"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHr).->[Double](2.0.*(languageOmission("hr"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEt).->[Double](2.0.*(languageOmission("et"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameMt).->[Double](2.0.*(languageOmission("mt"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSk).->[Double](2.0.*(languageOmission("sk"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSl).->[Double](2.0.*(languageOmission("sl"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameUk).->[Double](2.0.*(languageOmission("uk"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameGeneral).->[Double](1.0)).filter(((x0$1: (String, Double)) => x0$1 match { case (_1: String, _2: Double): (String, Double)(_, (boost @ _)) => boost.!=(0) })); maybeFuzzy match { case (value: com.sksamuel.elastic4s.requests.searches.suggestion.Fuzziness): Some[com.sksamuel.elastic4s.requests.searches.suggestion.Fuzziness]((fuzzy @ _)) => com.sksamuel.elastic4s.ElasticApi.should(IdeaSearchFilters.this.multiMatchQuery(text).fields(fieldsBoosts).boost(2.0), IdeaSearchFilters.this.multiMatchQuery(text).fields(fieldsBoosts).fuzziness(fuzzy).boost(1.0)) case scala.None => com.sksamuel.elastic4s.ElasticApi.multiMatchQuery(text).fields(fieldsBoosts) } } }))
117 5416 3817 - 3855 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.name).->[Double](3.0)
118 3663 3865 - 3899 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFr org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFr
118 4898 3908 - 3930 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("fr")
118 1527 3903 - 3905 Literal <nosymbol> 2.0
118 3784 3903 - 3930 Apply scala.Double.* 2.0.*(languageOmission("fr"))
118 1825 3865 - 3930 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFr).->[Double](2.0.*(languageOmission("fr")))
119 3171 3978 - 3980 Literal <nosymbol> 2.0
119 5163 3940 - 3974 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEn org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEn
119 1134 3983 - 4005 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("en")
119 3643 3940 - 4005 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEn).->[Double](2.0.*(languageOmission("en")))
119 5428 3978 - 4005 Apply scala.Double.* 2.0.*(languageOmission("en"))
120 1833 4053 - 4080 Apply scala.Double.* 2.0.*(languageOmission("it"))
120 4697 4053 - 4055 Literal <nosymbol> 2.0
120 1535 4015 - 4049 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameIt org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameIt
120 5270 4015 - 4080 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameIt).->[Double](2.0.*(languageOmission("it")))
120 3720 4058 - 4080 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("it")
121 5358 4133 - 4155 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("de")
121 3650 4128 - 4155 Apply scala.Double.* 2.0.*(languageOmission("de"))
121 1661 4090 - 4155 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDe).->[Double](2.0.*(languageOmission("de")))
121 1143 4128 - 4130 Literal <nosymbol> 2.0
121 3179 4090 - 4124 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDe org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDe
122 3235 4165 - 4230 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameBg).->[Double](2.0.*(languageOmission("bg")))
122 5281 4203 - 4230 Apply scala.Double.* 2.0.*(languageOmission("bg"))
122 4705 4165 - 4199 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameBg org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameBg
122 1959 4208 - 4230 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("bg")
122 3729 4203 - 4205 Literal <nosymbol> 2.0
123 5370 4278 - 4280 Literal <nosymbol> 2.0
123 1670 4278 - 4305 Apply scala.Double.* 2.0.*(languageOmission("cs"))
123 3596 4283 - 4305 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("cs")
123 1080 4240 - 4274 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameCs org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameCs
123 4890 4240 - 4305 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameCs).->[Double](2.0.*(languageOmission("cs")))
124 5215 4358 - 4380 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("da")
124 2730 4315 - 4349 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDa org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDa
124 1967 4353 - 4355 Literal <nosymbol> 2.0
124 3168 4353 - 4380 Apply scala.Double.* 2.0.*(languageOmission("da"))
124 1292 4315 - 4380 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDa).->[Double](2.0.*(languageOmission("da")))
125 2944 4390 - 4455 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameNl).->[Double](2.0.*(languageOmission("nl")))
125 3604 4428 - 4430 Literal <nosymbol> 2.0
125 5521 4390 - 4424 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameNl org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameNl
125 4815 4428 - 4455 Apply scala.Double.* 2.0.*(languageOmission("nl"))
125 1531 4433 - 4455 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("nl")
126 3175 4508 - 4530 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("fi")
126 5226 4503 - 4505 Literal <nosymbol> 2.0
126 5354 4465 - 4530 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFi).->[Double](2.0.*(languageOmission("fi")))
126 1918 4465 - 4499 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFi org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFi
126 1218 4503 - 4530 Apply scala.Double.* 2.0.*(languageOmission("fi"))
127 1757 4540 - 4605 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEl).->[Double](2.0.*(languageOmission("el")))
127 4828 4583 - 4605 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("el")
127 3557 4540 - 4574 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEl org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEl
127 1484 4578 - 4580 Literal <nosymbol> 2.0
127 2719 4578 - 4605 Apply scala.Double.* 2.0.*(languageOmission("el"))
128 3411 4615 - 4680 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHu).->[Double](2.0.*(languageOmission("hu")))
128 3124 4653 - 4655 Literal <nosymbol> 2.0
128 4368 4653 - 4680 Apply scala.Double.* 2.0.*(languageOmission("hu"))
128 5277 4615 - 4649 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHu org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHu
128 1229 4658 - 4680 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("hu")
129 1665 4690 - 4724 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLv org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLv
129 4766 4728 - 4730 Literal <nosymbol> 2.0
129 1769 4728 - 4755 Apply scala.Double.* 2.0.*(languageOmission("lv"))
129 2728 4733 - 4755 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("lv")
129 5210 4690 - 4755 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLv).->[Double](2.0.*(languageOmission("lv")))
130 1363 4803 - 4805 Literal <nosymbol> 2.0
130 1596 4765 - 4830 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLt).->[Double](2.0.*(languageOmission("lt")))
130 4380 4808 - 4830 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("lt")
130 3423 4803 - 4830 Apply scala.Double.* 2.0.*(languageOmission("lt"))
130 3327 4765 - 4799 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLt org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLt
131 761 4883 - 4905 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("pt")
131 4972 4840 - 4874 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.namePt org.make.core.idea.indexed.IdeaElasticsearchFieldNames.namePt
131 3255 4840 - 4905 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.namePt).->[Double](2.0.*(languageOmission("pt")))
131 3012 4878 - 4880 Literal <nosymbol> 2.0
131 5222 4878 - 4905 Apply scala.Double.* 2.0.*(languageOmission("pt"))
132 1214 4915 - 4949 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameRo org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameRo
132 4390 4953 - 4955 Literal <nosymbol> 2.0
132 1608 4953 - 4980 Apply scala.Double.* 2.0.*(languageOmission("ro"))
132 4753 4915 - 4980 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameRo).->[Double](2.0.*(languageOmission("ro")))
132 3553 4958 - 4980 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("ro")
133 2870 4990 - 5024 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEs org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEs
133 5169 5033 - 5055 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("es")
133 3263 5028 - 5055 Apply scala.Double.* 2.0.*(languageOmission("es"))
133 772 5028 - 5030 Literal <nosymbol> 2.0
133 1223 4990 - 5055 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEs).->[Double](2.0.*(languageOmission("es")))
134 4520 5065 - 5099 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSv org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSv
134 4762 5103 - 5130 Apply scala.Double.* 2.0.*(languageOmission("sv"))
134 3562 5103 - 5105 Literal <nosymbol> 2.0
134 2883 5065 - 5130 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSv).->[Double](2.0.*(languageOmission("sv")))
134 1543 5108 - 5130 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("sv")
135 744 5140 - 5174 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHr org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHr
135 5178 5178 - 5180 Literal <nosymbol> 2.0
135 4531 5140 - 5205 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHr).->[Double](2.0.*(languageOmission("hr")))
135 1148 5178 - 5205 Apply scala.Double.* 2.0.*(languageOmission("hr"))
135 3077 5183 - 5205 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("hr")
136 1554 5253 - 5255 Literal <nosymbol> 2.0
136 2807 5253 - 5280 Apply scala.Double.* 2.0.*(languageOmission("et"))
136 2394 5215 - 5249 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEt org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEt
136 758 5215 - 5280 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEt).->[Double](2.0.*(languageOmission("et")))
136 4771 5258 - 5280 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("et")
137 5289 5290 - 5324 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameMt org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameMt
137 3085 5328 - 5330 Literal <nosymbol> 2.0
137 1159 5333 - 5355 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("mt")
137 4642 5328 - 5355 Apply scala.Double.* 2.0.*(languageOmission("mt"))
137 2405 5290 - 5355 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameMt).->[Double](2.0.*(languageOmission("mt")))
138 1530 5365 - 5399 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSk org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSk
138 1020 5403 - 5430 Apply scala.Double.* 2.0.*(languageOmission("sk"))
138 4053 5365 - 5430 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSk).->[Double](2.0.*(languageOmission("sk")))
138 2817 5408 - 5430 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("sk")
138 4719 5403 - 5405 Literal <nosymbol> 2.0
139 1096 5478 - 5480 Literal <nosymbol> 2.0
139 3261 5440 - 5474 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSl org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSl
139 4651 5483 - 5505 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("sl")
139 2665 5478 - 5505 Apply scala.Double.* 2.0.*(languageOmission("sl"))
139 1540 5440 - 5505 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSl).->[Double](2.0.*(languageOmission("sl")))
140 4910 5515 - 5549 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameUk org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameUk
140 1028 5558 - 5580 Apply org.make.core.idea.IdeaSearchFilters.languageOmission languageOmission("uk")
140 2965 5553 - 5555 Literal <nosymbol> 2.0
140 4061 5553 - 5580 Apply scala.Double.* 2.0.*(languageOmission("uk"))
140 3185 5515 - 5580 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameUk).->[Double](2.0.*(languageOmission("uk")))
141 1310 5590 - 5635 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameGeneral).->[Double](1.0)
142 2675 3804 - 5684 Apply scala.collection.IterableOps.filter scala.Predef.Map.apply[String, Double](scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.name).->[Double](3.0), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFr).->[Double](2.0.*(languageOmission("fr"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEn).->[Double](2.0.*(languageOmission("en"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameIt).->[Double](2.0.*(languageOmission("it"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDe).->[Double](2.0.*(languageOmission("de"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameBg).->[Double](2.0.*(languageOmission("bg"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameCs).->[Double](2.0.*(languageOmission("cs"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameDa).->[Double](2.0.*(languageOmission("da"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameNl).->[Double](2.0.*(languageOmission("nl"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameFi).->[Double](2.0.*(languageOmission("fi"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEl).->[Double](2.0.*(languageOmission("el"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHu).->[Double](2.0.*(languageOmission("hu"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLv).->[Double](2.0.*(languageOmission("lv"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameLt).->[Double](2.0.*(languageOmission("lt"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.namePt).->[Double](2.0.*(languageOmission("pt"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameRo).->[Double](2.0.*(languageOmission("ro"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEs).->[Double](2.0.*(languageOmission("es"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSv).->[Double](2.0.*(languageOmission("sv"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameHr).->[Double](2.0.*(languageOmission("hr"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameEt).->[Double](2.0.*(languageOmission("et"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameMt).->[Double](2.0.*(languageOmission("mt"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSk).->[Double](2.0.*(languageOmission("sk"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameSl).->[Double](2.0.*(languageOmission("sl"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameUk).->[Double](2.0.*(languageOmission("uk"))), scala.Predef.ArrowAssoc[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.nameGeneral).->[Double](1.0)).filter(((x0$1: (String, Double)) => x0$1 match { case (_1: String, _2: Double): (String, Double)(_, (boost @ _)) => boost.!=(0) }))
142 4598 5672 - 5682 Apply scala.Double.!= boost.!=(0)
146 2801 5748 - 6030 Apply com.sksamuel.elastic4s.api.QueryApi.should com.sksamuel.elastic4s.ElasticApi.should(IdeaSearchFilters.this.multiMatchQuery(text).fields(fieldsBoosts).boost(2.0), IdeaSearchFilters.this.multiMatchQuery(text).fields(fieldsBoosts).fuzziness(fuzzy).boost(1.0))
149 1550 5794 - 5880 Apply com.sksamuel.elastic4s.requests.searches.queries.matches.MultiMatchQuery.boost IdeaSearchFilters.this.multiMatchQuery(text).fields(fieldsBoosts).boost(2.0)
153 4839 5896 - 6016 Apply com.sksamuel.elastic4s.requests.searches.queries.matches.MultiMatchQuery.boost IdeaSearchFilters.this.multiMatchQuery(text).fields(fieldsBoosts).fuzziness(fuzzy).boost(1.0)
158 968 6062 - 6141 Apply com.sksamuel.elastic4s.requests.searches.queries.matches.MultiMatchQuery.fields com.sksamuel.elastic4s.ElasticApi.multiMatchQuery(text).fields(fieldsBoosts)
164 841 6252 - 6501 Apply scala.Option.flatMap org.scalatest.testsuite ideaSearchQuery.filters.flatMap[com.sksamuel.elastic4s.requests.searches.queries.Query](((x$5: org.make.core.idea.IdeaSearchFilters) => x$5.questionId match { case (value: org.make.core.idea.QuestionIdSearchFilter): Some[org.make.core.idea.QuestionIdSearchFilter]((questionId: org.make.core.question.QuestionId): org.make.core.idea.QuestionIdSearchFilter((questionId @ _))) => scala.Some.apply[com.sksamuel.elastic4s.requests.searches.term.TermQuery](com.sksamuel.elastic4s.ElasticApi.termQuery(org.make.core.idea.indexed.IdeaElasticsearchFieldNames.questionId, questionId.value)) case _ => scala.None }))
165 1083 6292 - 6304 Select org.make.core.idea.IdeaSearchFilters.questionId x$5.questionId
167 2688 6446 - 6462 Select org.make.core.question.QuestionId.value questionId.value
167 542 6385 - 6463 Apply com.sksamuel.elastic4s.api.QueryApi.termQuery com.sksamuel.elastic4s.ElasticApi.termQuery(org.make.core.idea.indexed.IdeaElasticsearchFieldNames.questionId, questionId.value)
167 4851 6380 - 6464 Apply scala.Some.apply scala.Some.apply[com.sksamuel.elastic4s.requests.searches.term.TermQuery](com.sksamuel.elastic4s.ElasticApi.termQuery(org.make.core.idea.indexed.IdeaElasticsearchFieldNames.questionId, questionId.value))
167 4456 6406 - 6444 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.questionId org.make.core.idea.indexed.IdeaElasticsearchFieldNames.questionId
168 2737 6483 - 6487 Select scala.None scala.None
174 1377 6621 - 7064 Apply scala.Option.flatMap org.scalatest.testsuite ideaSearchQuery.filters.flatMap[com.sksamuel.elastic4s.requests.searches.queries.Query](((x$6: org.make.core.idea.IdeaSearchFilters) => x$6.status.map[com.sksamuel.elastic4s.requests.searches.queries.Query](((x0$1: org.make.core.idea.StatusSearchFilter) => x0$1 match { case (status: Seq[org.make.core.idea.IdeaStatus]): org.make.core.idea.StatusSearchFilter(scala.`package`.Seq.unapplySeq[org.make.core.idea.IdeaStatus](<unapply-selector>) <unapply> ((status @ _))) => com.sksamuel.elastic4s.ElasticApi.termQuery(org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status, status.value) case (status: Seq[org.make.core.idea.IdeaStatus]): org.make.core.idea.StatusSearchFilter((status @ _)) => com.sksamuel.elastic4s.ElasticApi.termsQuery[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status, status.map[String](((x$7: org.make.core.idea.IdeaStatus) => x$7.value))) case _ => com.sksamuel.elastic4s.ElasticApi.termsQuery[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status, IdeaStatus.Activated.value) }))))
175 3148 6661 - 7058 Apply scala.Option.map x$6.status.map[com.sksamuel.elastic4s.requests.searches.queries.Query](((x0$1: org.make.core.idea.StatusSearchFilter) => x0$1 match { case (status: Seq[org.make.core.idea.IdeaStatus]): org.make.core.idea.StatusSearchFilter(scala.`package`.Seq.unapplySeq[org.make.core.idea.IdeaStatus](<unapply-selector>) <unapply> ((status @ _))) => com.sksamuel.elastic4s.ElasticApi.termQuery(org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status, status.value) case (status: Seq[org.make.core.idea.IdeaStatus]): org.make.core.idea.StatusSearchFilter((status @ _)) => com.sksamuel.elastic4s.ElasticApi.termsQuery[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status, status.map[String](((x$7: org.make.core.idea.IdeaStatus) => x$7.value))) case _ => com.sksamuel.elastic4s.ElasticApi.termsQuery[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status, IdeaStatus.Activated.value) }))
177 3139 6791 - 6803 Select org.make.core.idea.IdeaStatus.value status.value
177 1090 6734 - 6804 Apply com.sksamuel.elastic4s.api.QueryApi.termQuery com.sksamuel.elastic4s.ElasticApi.termQuery(org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status, status.value)
177 4184 6755 - 6789 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status
179 4991 6858 - 6936 Apply com.sksamuel.elastic4s.api.QueryApi.termsQuery com.sksamuel.elastic4s.ElasticApi.termsQuery[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status, status.map[String](((x$7: org.make.core.idea.IdeaStatus) => x$7.value)))
179 4389 6880 - 6914 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status
179 551 6916 - 6935 Apply scala.collection.IterableOps.map status.map[String](((x$7: org.make.core.idea.IdeaStatus) => x$7.value))
179 2659 6927 - 6934 Select org.make.core.idea.IdeaStatus.value x$7.value
181 4308 6965 - 7050 Apply com.sksamuel.elastic4s.api.QueryApi.termsQuery com.sksamuel.elastic4s.ElasticApi.termsQuery[String](org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status, IdeaStatus.Activated.value)
181 850 7023 - 7049 Select org.make.core.idea.IdeaStatus.value IdeaStatus.Activated.value
181 2745 6987 - 7021 Select org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status org.make.core.idea.indexed.IdeaElasticsearchFieldNames.status
186 4400 7103 - 7107 Select scala.None org.scalatest.testsuite scala.None