lib/hui/query/highlighter_original.ex

defmodule Hui.Query.HighlighterOriginal do
  @moduledoc """
  Struct related to results highlighting - [Original highlighter](http://lucene.apache.org/solr/guide/highlighting.html#the-original-highlighter)
  """
  defstruct [
              :alternateField,
              :formatter,
              :fragmenter,
              :highlightAlternate,
              :maxAlternateFieldLength,
              :maxMultiValuedToExamine,
              :maxMultiValuedToMatch,
              :mergeContiguous,
              :payloads,
              :per_field_method,
              :preserveMulti,
              :"regex.maxAnalyzedChars",
              :"regex.pattern",
              :"regex.slop",
              :"simple.post",
              :"simple.pre"
            ] ++ [per_field: false]

  @typedoc """
  Struct for [original highlighter](http://lucene.apache.org/solr/guide/highlighting.html#the-original-highlighter),
  use in conjunction with the highlighting struct -`t:Hui.Query.Highlight.t/0`.
  """
  @type t :: %__MODULE__{
          alternateField: binary,
          formatter: :simple,
          fragmenter: :gap | :regex,
          highlightAlternate: boolean,
          maxAlternateFieldLength: number,
          maxMultiValuedToExamine: number,
          maxMultiValuedToMatch: number,
          mergeContiguous: boolean,
          payloads: boolean,
          per_field: boolean,
          per_field_method: :fastVector,
          preserveMulti: boolean,
          "regex.maxAnalyzedChars": number,
          "regex.pattern": binary,
          "regex.slop": number,
          "simple.post": binary,
          "simple.pre": binary
        }

  @spec new(binary, integer, boolean) :: t
  def new(field, len \\ nil, highlight \\ nil),
    do: %__MODULE__{
      alternateField: field,
      maxAlternateFieldLength: len,
      highlightAlternate: highlight
    }

  @spec new :: t
  def new(), do: %__MODULE__{}
end