git.iko.soy/typeable/bloodhound
on master help sign in
fixed hoogling, added RangeQuery, formatting, added some exports
commitfd1c921df2e4632a5e312aa272b9f5a9a6b050d5 authorChris Allen <cma@bitemyapp.com> dateWed 4 Jun 2014, 05:17 (12 years ago) parent0d86175
4 files changed+75−47
Database/Bloodhound/Client.hs+10−6 Database/Bloodhound/Types.hs+49−40 Database/Bloodhound/Types/Instances.hs+15 Makefile+1−1
Database/Bloodhound/Client.hs+10−6
@@ -1,6 +1,9 @@
11module Database.Bloodhound.Client
22 ( createIndex
33 , deleteIndex
4+ , indexExists
5+ , openIndex
6+ , closeIndex
47 , createMapping
58 , deleteMapping
69 , indexDocument
@@ -13,6 +16,10 @@ module Database.Bloodhound.Client
1316 , refreshIndex
1417 , mkSearch
1518 , bulk
19+ , pageSearch
20+ , mkShardCount
21+ , mkReplicaCount
22+ , getStatus
1623 )
1724 where
1825
@@ -47,9 +54,6 @@ mkReplicaCount n
4754 | n > 1000 = Nothing -- ...
4855 | otherwise = Just (ReplicaCount n)
4956
50−responseIsError :: Reply -> Bool
51−responseIsError resp = NHTS.statusCode (responseStatus resp) > 299
52−
5357emptyBody :: L.ByteString
5458emptyBody = L.pack ""
5559
@@ -176,9 +180,9 @@ mash = foldl' (\b x -> mappend b (lazyByteString x))
176180mkMetadataValue :: Text -> String -> String -> String -> Value
177181mkMetadataValue operation indexName mappingName docId =
178182 object [operation .=
179− object ["_index" .= indexName
180− , "_type" .= mappingName
181− , "_id" .= docId]]
183+ object [ "_index" .= indexName
184+ , "_type" .= mappingName
185+ , "_id" .= docId]]
182186
183187getStreamChunk :: BulkOperation -> [L.ByteString]
184188getStreamChunk (BulkIndex (IndexName indexName)
Database/Bloodhound/Types.hs+49−40
@@ -16,6 +16,7 @@ module Database.Bloodhound.Types
1616 , mkMatchQuery
1717 , mkMultiMatchQuery
1818 , mkBoolQuery
19+ , mkRangeQuery
1920 , Version(..)
2021 , Status(..)
2122 , Existence(..)
@@ -122,6 +123,9 @@ module Database.Bloodhound.Types
122123 , QueryPath(..)
123124 , MinimumTermFrequency(..)
124125 , PercentMatch(..)
126+ , FieldDefinition(..)
127+ , MappingField(..)
128+ , Mapping(..)
125129 ) where
126130
127131import Data.Aeson
@@ -361,34 +365,35 @@ data Search = Search { queryBody :: Maybe Query
361365 , from :: From
362366 , size :: Size } deriving (Eq, Show)
363367
364−data Query = TermQuery Term (Maybe Boost)
365− | TermsQuery [Term] MinimumMatch
366− | QueryMatchQuery MatchQuery
367− | QueryMultiMatchQuery MultiMatchQuery
368− | QueryBoolQuery BoolQuery
369− | QueryBoostingQuery BoostingQuery
370− | QueryCommonTermsQuery CommonTermsQuery
371− | ConstantScoreFilter Filter Boost
372− | ConstantScoreQuery Query Boost
373− | QueryDisMaxQuery DisMaxQuery
374− | QueryFilteredQuery FilteredQuery
375− | QueryFuzzyLikeThisQuery FuzzyLikeThisQuery
376− | QueryFuzzyLikeFieldQuery FuzzyLikeFieldQuery
377− | QueryFuzzyQuery FuzzyQuery
378− | QueryHasChildQuery HasChildQuery
379− | QueryHasParentQuery HasParentQuery
380− | IdsQuery MappingName [DocId]
381− | QueryIndicesQuery IndicesQuery
382− | MatchAllQuery (Maybe Boost)
383− | QueryMoreLikeThisQuery MoreLikeThisQuery
384− | QueryMoreLikeThisFieldQuery MoreLikeThisFieldQuery
385− | QueryNestedQuery NestedQuery
386− | QueryPrefixQuery PrefixQuery
387− | QueryQueryStringQuery QueryStringQuery
388− | QuerySimpleQueryStringQuery SimpleQueryStringQuery
389− | QueryRangeQuery RangeQuery
390− | QueryRegexpQuery RegexpQuery
391− deriving (Eq, Show)
368+data Query =
369+ TermQuery Term (Maybe Boost)
370+ | TermsQuery [Term] MinimumMatch
371+ | QueryMatchQuery MatchQuery
372+ | QueryMultiMatchQuery MultiMatchQuery
373+ | QueryBoolQuery BoolQuery
374+ | QueryBoostingQuery BoostingQuery
375+ | QueryCommonTermsQuery CommonTermsQuery
376+ | ConstantScoreFilter Filter Boost
377+ | ConstantScoreQuery Query Boost
378+ | QueryDisMaxQuery DisMaxQuery
379+ | QueryFilteredQuery FilteredQuery
380+ | QueryFuzzyLikeThisQuery FuzzyLikeThisQuery
381+ | QueryFuzzyLikeFieldQuery FuzzyLikeFieldQuery
382+ | QueryFuzzyQuery FuzzyQuery
383+ | QueryHasChildQuery HasChildQuery
384+ | QueryHasParentQuery HasParentQuery
385+ | IdsQuery MappingName [DocId]
386+ | QueryIndicesQuery IndicesQuery
387+ | MatchAllQuery (Maybe Boost)
388+ | QueryMoreLikeThisQuery MoreLikeThisQuery
389+ | QueryMoreLikeThisFieldQuery MoreLikeThisFieldQuery
390+ | QueryNestedQuery NestedQuery
391+ | QueryPrefixQuery PrefixQuery
392+ | QueryQueryStringQuery QueryStringQuery
393+ | QuerySimpleQueryStringQuery SimpleQueryStringQuery
394+ | QueryRangeQuery RangeQuery
395+ | QueryRegexpQuery RegexpQuery
396+ deriving (Eq, Show)
392397
393398data RegexpQuery =
394399 RegexpQuery { regexpQueryField :: FieldName
@@ -403,6 +408,9 @@ data RangeQuery =
403408 , rangeQueryRange :: Either HalfRange Range
404409 , rangeQueryBoost :: Boost } deriving (Eq, Show)
405410
411+mkRangeQuery :: FieldName -> Either HalfRange Range -> RangeQuery
412+mkRangeQuery f r = RangeQuery f r (Boost 1.0)
413+
406414data SimpleQueryStringQuery =
407415 SimpleQueryStringQuery { simpleQueryStringQuery :: QueryString
408416 , simpleQueryStringField :: Maybe FieldOrFields
@@ -413,18 +421,19 @@ data SimpleQueryStringQuery =
413421 , simpleQueryStringLocale :: Maybe Locale
414422 } deriving (Eq, Show)
415423
416−data SimpleQueryFlag = SimpleQueryAll
417− | SimpleQueryNone
418− | SimpleQueryAnd
419− | SimpleQueryOr
420− | SimpleQueryPrefix
421− | SimpleQueryPhrase
422− | SimpleQueryPrecedence
423− | SimpleQueryEscape
424− | SimpleQueryWhitespace
425− | SimpleQueryFuzzy
426− | SimpleQueryNear
427− | SimpleQuerySlop deriving (Eq, Show)
424+data SimpleQueryFlag =
425+ SimpleQueryAll
426+ | SimpleQueryNone
427+ | SimpleQueryAnd
428+ | SimpleQueryOr
429+ | SimpleQueryPrefix
430+ | SimpleQueryPhrase
431+ | SimpleQueryPrecedence
432+ | SimpleQueryEscape
433+ | SimpleQueryWhitespace
434+ | SimpleQueryFuzzy
435+ | SimpleQueryNear
436+ | SimpleQuerySlop deriving (Eq, Show)
428437
429438-- use_dis_max and tie_breaker when fields are plural?
430439data QueryStringQuery =
Database/Bloodhound/Types/Instances.hs+15
@@ -196,10 +196,25 @@ instance ToJSON Query where
196196 toJSON (QueryPrefixQuery query) =
197197 object [ "prefix" .= toJSON query ]
198198
199+ toJSON (QueryRangeQuery query) =
200+ object [ "range" .= toJSON query ]
199201
200202mField :: (ToJSON a, Functor f) => T.Text -> f a -> f (T.Text, Value)
201203mField field = fmap ((field .=) . toJSON)
202204
205+instance ToJSON RangeQuery where
206+ toJSON (RangeQuery (FieldName fieldName) (Right range) boost) =
207+ object [ fieldName .= conjoined ]
208+ where conjoined = [ "boost" .= toJSON boost
209+ , lessKey .= lessVal
210+ , greaterKey .= greaterVal ]
211+ (lessKey, lessVal, greaterKey, greaterVal) = rangeToKV range
212+
213+ toJSON (RangeQuery (FieldName fieldName) (Left halfRange) boost) =
214+ object [ fieldName .= conjoined ]
215+ where conjoined = [ "boost" .= toJSON boost
216+ , key .= val ]
217+ (key, val) = halfRangeToKV halfRange
203218
204219instance ToJSON PrefixQuery where
205220 toJSON (PrefixQuery (FieldName fieldName) queryValue boost) =
Makefile+1−1
@@ -22,7 +22,7 @@ reset:
2222 cabal sandbox init
2323
2424haddock:
25− cabal haddock --hyperlink-source --html-location='http://hackage.haskell.org/package/bloodhound/docs' --contents-location='http://hackage.haskell.org/package/bloodhound'
25+ cabal haddock --hoogle --hyperlink-source --html-location='http://hackage.haskell.org/package/bloodhound/docs' --contents-location='http://hackage.haskell.org/package/bloodhound'
2626
2727# cp -R ./dist/doc/html/bloodhound/ bloodhound-0.1.0.1-docs
2828# tar cvzf --format=ustar -f bloodhound-0.1.0.1-docs.tar.gz bloodhound-0.1.0.1-docs