def convertToSolrFilter()

in connector/src/main/scala/org/apache/spark/sql/cassandra/SolrPredicateRules.scala [242:278]


  def convertToSolrFilter(filter: Filter): SolrFilter = filter match {
    //Equivalence queries
    case EqualTo(attr: String, value: Any) => SolrFilter(s"${toSolrField(attr)}:${toSolrValue(value)}", filter.references)
    case EqualNullSafe(attr: String, value: Any) => SolrFilter(s"${toSolrField(attr)}:${toSolrValue(value)}", filter.references)
    case In(attr: String, values: Array[Any]) =>
      SolrFilter(s"${toSolrField(attr)}:(${values.map(toSolrValue).mkString(" ")})", filter.references)

    //Range Queries
    case GreaterThan(attr: String, value: Any) => SolrFilter(s"${toSolrField(attr)}:{${toSolrValue(value)} TO *]", filter.references)
    case GreaterThanOrEqual(attr: String, value: Any) =>
      SolrFilter(s"${toSolrField(attr)}:[${toSolrValue(value)} TO *]", filter.references)

    case LessThan(attr: String, value: Any) => SolrFilter(s"${toSolrField(attr)}:[* TO ${toSolrValue(value)}}", filter.references)
    case LessThanOrEqual(attr: String, value: Any) =>
      SolrFilter(s"${toSolrField(attr)}:[* TO ${toSolrValue(value)}]", filter.references)

    //Null Checks
    case IsNull(attr: String) => SolrFilter(s"-${toSolrField(attr)}:[* TO *]", filter.references)
    case IsNotNull(attr: String) => SolrFilter(s"${toSolrField(attr)}:*", filter.references)

    //Conjunctions
    case And(left: Filter, right: Filter) =>
      SolrFilter(s"""(${convertToSolrFilter(left).solrQuery} AND ${convertToSolrFilter(right).solrQuery})""", filter.references)
    case Or(left: Filter, right: Filter) =>
      SolrFilter(s"""(${convertToSolrFilter(left).solrQuery} OR ${convertToSolrFilter(right).solrQuery})""", filter.references)
    case Not(child: Filter) =>
      SolrFilter(s"""-(${convertToSolrFilter(child).solrQuery})""", filter.references)

    //StringMatching
    case StringStartsWith(attr: String, value: String) => SolrFilter(s"${toSolrField(attr)}:${toSolrValue(value)}*", filter.references)
    case StringEndsWith(attr: String, value: String) => SolrFilter(s"${toSolrField(attr)}:*${toSolrValue(value)}", filter.references)
    case StringContains(attr: String, value: String) => SolrFilter(s"${toSolrField(attr)}:*${toSolrValue(value)}*", filter.references)

    //Unknown
    case unknown =>
      throw new IllegalArgumentException(s"$unknown cannot be converted")
  }