Commit d5065d77 authored by Leonardo Menezes's avatar Leonardo Menezes
Browse files

consider both string and text types as analyse-able

closes #115
parent a68c824f
Loading
Loading
Loading
Loading
+11 −3
Original line number Original line Diff line number Diff line
@@ -4,6 +4,14 @@ import play.api.libs.json._


object IndexFields {
object IndexFields {


  private final val AnalyzableFields = Seq(
    "string", // FIXME: ES 2.X
    "text"
  )

  private final def analyzable(fieldType: String) =
    AnalyzableFields.contains(fieldType)

  def apply(index: String, data: JsValue) = {
  def apply(index: String, data: JsValue) = {
    val docTypes = (data \ index \ "mappings").as[JsObject].keys
    val docTypes = (data \ index \ "mappings").as[JsObject].keys
    val fields = docTypes.flatMap { docType =>
    val fields = docTypes.flatMap { docType =>
@@ -21,16 +29,16 @@ object IndexFields {


          case p if (data \ p \ "fields").asOpt[JsObject].isDefined =>
          case p if (data \ p \ "fields").asOpt[JsObject].isDefined =>
            val fields = (data \ p \ "fields").as[JsObject].keys.collect {
            val fields = (data \ p \ "fields").as[JsObject].keys.collect {
              case field if (data \ p \ "fields" \ field \ "type").asOpt[String].exists(_.equals("string")) =>
              case field if (data \ p \ "fields" \ field \ "type").asOpt[String].exists(analyzable) =>
                s"$p.$field"
                s"$p.$field"
            }.toSeq
            }.toSeq
            if ((data \ p \ "type").asOpt[String].exists(_.equals("string"))) {
            if ((data \ p \ "type").asOpt[String].exists(analyzable)) {
              fields :+ p
              fields :+ p
            } else {
            } else {
              fields
              fields
            }
            }


          case p if (data \ p \ "type").asOpt[String].exists(_.equals("string")) =>
          case p if (data \ p \ "type").asOpt[String].exists(analyzable) =>
            Seq(p)
            Seq(p)
        }.flatten.toSeq
        }.flatten.toSeq
      case _ => Seq()
      case _ => Seq()