@@ -336,6 +336,8 @@ module Database.V5.Bloodhound.Types
336336 , SuggestOptions(..)
337337 , SuggestResponse(..)
338338 , NamedSuggestionResponse(..)
339+ , DirectGenerators(..)
340+ , DirectGeneratorSuggestModeTypes (..)
339341
340342 , Aggregation(..)
341343 , Aggregations
@@ -5293,6 +5295,7 @@ data PhraseSuggester =
52935295 , phraseSuggesterShardSize :: Maybe Int
52945296 , phraseSuggesterHighlight :: Maybe PhraseSuggesterHighlighter
52955297 , phraseSuggesterCollate :: Maybe PhraseSuggesterCollate
5298+ , phraseSuggesterCandidateGenerators :: Maybe [DirectGenerators]
52965299 }
52975300 deriving (Show, Generic, Eq, Read)
52985301
@@ -5308,6 +5311,7 @@ instance ToJSON PhraseSuggester where
53085311 , "shard_size" .= phraseSuggesterShardSize
53095312 , "highlight" .= phraseSuggesterHighlight
53105313 , "collate" .= phraseSuggesterCollate
5314+ , "direct_generator" .= phraseSuggesterCandidateGenerators
53115315 ]
53125316
53135317instance FromJSON PhraseSuggester where
@@ -5324,11 +5328,12 @@ instance FromJSON PhraseSuggester where
53245328 <*> o .:? "shard_size"
53255329 <*> o .:? "highlight"
53265330 <*> o .:? "collate"
5331+ <*> o .:? "direct_generator"
53275332
53285333mkPhraseSuggester :: FieldName -> PhraseSuggester
53295334mkPhraseSuggester fName =
53305335 PhraseSuggester fName Nothing Nothing Nothing Nothing Nothing Nothing
5331− Nothing Nothing Nothing Nothing
5336+ Nothing Nothing Nothing Nothing Nothing
53325337
53335338data PhraseSuggesterHighlighter =
53345339 PhraseSuggesterHighlighter { phraseSuggesterHighlighterPreTag :: Text
@@ -5418,3 +5423,65 @@ instance FromJSON NamedSuggestionResponse where
54185423 return $ NamedSuggestionResponse suggestionName' suggestionResponses'
54195424
54205425 parseJSON x = typeMismatch "NamedSuggestionResponse" x
5426+
5427+data DirectGeneratorSuggestModeTypes = DirectGeneratorSuggestModeMissing
5428+ | DirectGeneratorSuggestModePopular
5429+ | DirectGeneratorSuggestModeAlways
5430+ deriving (Show, Eq, Read, Generic)
5431+
5432+instance ToJSON DirectGeneratorSuggestModeTypes where
5433+ toJSON DirectGeneratorSuggestModeMissing = "missing"
5434+ toJSON DirectGeneratorSuggestModePopular = "popular"
5435+ toJSON DirectGeneratorSuggestModeAlways = "always"
5436+
5437+instance FromJSON DirectGeneratorSuggestModeTypes where
5438+ parseJSON = withText "DirectGeneratorSuggestModeTypes" parse
5439+ where parse "missing" = pure DirectGeneratorSuggestModeMissing
5440+ parse "popular" = pure DirectGeneratorSuggestModePopular
5441+ parse "always" = pure DirectGeneratorSuggestModeAlways
5442+ parse f = fail ("Unexpected DirectGeneratorSuggestModeTypes: " <> show f)
5443+
5444+data DirectGenerators = DirectGenerators
5445+ { directGeneratorsField :: Text
5446+ , directGeneratorsSize :: Maybe Int
5447+ , directGeneratorSuggestMode :: DirectGeneratorSuggestModeTypes
5448+ , directGeneratorMaxEdits :: Maybe Double
5449+ , directGeneratorPrefixLength :: Maybe Int
5450+ , directGeneratorMinWordLength :: Maybe Int
5451+ , directGeneratorMaxInspections :: Maybe Int
5452+ , directGeneratorMinDocFreq :: Maybe Double
5453+ , directGeneratorMaxTermFreq :: Maybe Double
5454+ , directGeneratorPreFilter :: Maybe Text
5455+ , directGeneratorPostFilter :: Maybe Text
5456+ }
5457+ deriving (Show, Eq, Read, Generic)
5458+
5459+
5460+instance ToJSON DirectGenerators where
5461+ toJSON DirectGenerators{..} = omitNulls [ "field" .= directGeneratorsField
5462+ , "size" .= directGeneratorsSize
5463+ , "suggest_mode" .= directGeneratorSuggestMode
5464+ , "max_edits" .= directGeneratorMaxEdits
5465+ , "prefix_length" .= directGeneratorPrefixLength
5466+ , "min_word_length" .= directGeneratorMinWordLength
5467+ , "max_inspections" .= directGeneratorMaxInspections
5468+ , "min_doc_freq" .= directGeneratorMinDocFreq
5469+ , "max_term_freq" .= directGeneratorMaxTermFreq
5470+ , "pre_filter" .= directGeneratorPreFilter
5471+ , "post_filter" .= directGeneratorPostFilter
5472+ ]
5473+
5474+instance FromJSON DirectGenerators where
5475+ parseJSON = withObject "DirectGenerators" parse
5476+ where parse o = DirectGenerators
5477+ <$> o .: "field"
5478+ <*> o .:? "size"
5479+ <*> o .: "suggest_mode"
5480+ <*> o .:? "max_edits"
5481+ <*> o .:? "prefix_length"
5482+ <*> o .:? "min_word_length"
5483+ <*> o .:? "max_inspections"
5484+ <*> o .:? "min_doc_freq"
5485+ <*> o .:? "max_term_freq"
5486+ <*> o .:? "pre_filter"
5487+ <*> o .:? "post_filter"