lib/hui/query/highlighter_fastvector.ex

defmodule Hui.Query.HighlighterFastVector do
  @moduledoc """
  Struct related to results highlighting - [Fast Vector highlighter](http://lucene.apache.org/solr/guide/highlighting.html#the-fastvector-highlighter)
  """

  defstruct [
              :alternateField,
              :boundaryScanner,
              :"bs.chars",
              :"bs.country",
              :"bs.language",
              :"bs.maxScan",
              :"bs.type",
              :fragListBuilder,
              :fragmentsBuilder,
              :highlightAlternate,
              :maxAlternateFieldLength,
              :multiValuedSeparatorChar,
              :phraseLimit
            ] ++ [per_field: false]

  @typedoc """
  Struct for [fast vector highlighter](http://lucene.apache.org/solr/guide/highlighting.html#the-fastvector-highlighter),
  use in conjunction with the highlighting struct -`t:Hui.Query.Highlight.t/0`.
  """
  @type t :: %__MODULE__{
          alternateField: binary,
          boundaryScanner: binary,
          "bs.chars": binary,
          "bs.country": binary,
          "bs.language": binary,
          "bs.maxScan": number,
          "bs.type": binary,
          fragListBuilder: binary,
          fragmentsBuilder: binary,
          highlightAlternate: boolean,
          maxAlternateFieldLength: number,
          multiValuedSeparatorChar: binary,
          per_field: boolean,
          phraseLimit: number
        }

  @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