All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sksamuel.elastic4s.requests.searches.queries.SimpleStringQuery.scala Maven / Gradle / Ivy

There is a newer version: 8.15.4
Show newest version
package com.sksamuel.elastic4s.requests.searches.queries

import com.sksamuel.elastic4s.ext.OptionImplicits._
import com.sksamuel.elastic4s.requests.analyzers.Analyzer

sealed trait SimpleQueryStringFlag
object SimpleQueryStringFlag {
  case object ALL        extends SimpleQueryStringFlag
  case object NONE       extends SimpleQueryStringFlag
  case object AND        extends SimpleQueryStringFlag
  case object NOT        extends SimpleQueryStringFlag
  case object OR         extends SimpleQueryStringFlag
  case object PREFIX     extends SimpleQueryStringFlag
  case object PHRASE     extends SimpleQueryStringFlag
  case object PRECEDENCE extends SimpleQueryStringFlag
  case object ESCAPE     extends SimpleQueryStringFlag
  case object WHITESPACE extends SimpleQueryStringFlag
  case object FUZZY      extends SimpleQueryStringFlag
  case object NEAR       extends SimpleQueryStringFlag
  case object SLOP       extends SimpleQueryStringFlag
}

case class SimpleStringQuery(query: String,
                             analyzer: Option[String] = None,
                             analyzeWildcard: Option[Boolean] = None,
                             operator: Option[String] = None,
                             queryName: Option[String] = None,
                             quote_field_suffix: Option[String] = None,
                             lenient: Option[Boolean] = None,
                             fields: Seq[(String, Option[Double])] = Nil,
                             flags: Seq[SimpleQueryStringFlag] = Nil,
                             minimumShouldMatch: Option[String] = None,
                             autoGenerateSynonymsPhraseQuery: Option[Boolean] = None)
    extends Query {

  def quoteFieldSuffix(suffix: String): SimpleStringQuery     = copy(quote_field_suffix = suffix.some)
  def flags(flags: SimpleQueryStringFlag*): SimpleStringQuery = copy(flags = flags)
  def analyzer(analyzer: String): SimpleStringQuery           = copy(analyzer = analyzer.some)
  def analyzer(analyzer: Analyzer): SimpleStringQuery         = copy(analyzer = analyzer.name.some)
  def queryName(queryName: String): SimpleStringQuery         = copy(queryName = queryName.some)
  def defaultOperator(op: String): SimpleStringQuery          = copy(operator = op.some)

  def lenient(lenient: Boolean): SimpleStringQuery = copy(lenient = lenient.some)

  def minimumShouldMatch(minimumShouldMatch: String): SimpleStringQuery =
    copy(minimumShouldMatch = minimumShouldMatch.some)

  def analyzeWildcard(analyzeWildcard: Boolean): SimpleStringQuery =
    copy(analyzeWildcard = analyzeWildcard.some)

  def asfields(fields: String*): SimpleStringQuery          = copy(fields = this.fields ++ fields.map(f => (f, None)))
  def field(name: String): SimpleStringQuery                = copy(fields = fields :+ (name, None))
  def field(name: String, boost: Double): SimpleStringQuery = copy(fields = fields :+ (name, boost.some))

  def autoGenerateSynonymsPhraseQuery(autoGenerateSynonymsPhraseQuery: Boolean): SimpleStringQuery =
    copy(autoGenerateSynonymsPhraseQuery = autoGenerateSynonymsPhraseQuery.some)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy