diff --git a/src/Gargantext/Database/Query/Facet.hs b/src/Gargantext/Database/Query/Facet.hs index afcb0c2b81bd7ebbe4c30867de05a4f3273d6357..73fee2f7009f3a8433352c25554fb60680894455 100644 --- a/src/Gargantext/Database/Query/Facet.hs +++ b/src/Gargantext/Database/Query/Facet.hs @@ -22,6 +22,7 @@ module Gargantext.Database.Query.Facet , viewDocuments' , runCountDocuments , filterWith + , runTestAgg , Category , Score @@ -59,6 +60,7 @@ import Gargantext.Database.Schema.Node import Gargantext.Database.Schema.NodeContext import Gargantext.Prelude (printDebug) +import Gargantext.Database.Query.FacetTest (runTestAgg) ------------------------------------------------------------------------ @@ -198,19 +200,34 @@ viewDocumentsAgg :: CorpusId -> Select FacetDocAggPart viewDocumentsAgg cId t ntId mQuery mYear = proc () -> do (c, nc) <- viewDocumentsQuery cId t ntId mQuery mYear -< () - cnng <- optionalRestrict queryContextNodeNgramsTable -< - \cnng' -> (cnng' ^. cnng_node_id) .== (nc ^. nc_node_id) .&& - (cnng' ^. cnng_context_id) .== (c ^. cs_id) + agg <- OAgg.aggregate sumInt4 (aggQ (nc ^. nc_node_id) (c ^. cs_id)) -< () + -- agg <- OAgg.aggregate sumInt4 + -- (proc (c', nc') -> do + -- cnng <- queryContextNodeNgramsTable -< () + -- restrict -< (cnng ^. cnng_node_id) .== (nc' ^. nc_node_id) + -- restrict -< (cnng ^. cnng_context_id) .== (c' ^. cs_id) + -- returnA -< (cnng ^. cnng_doc_count)) -< (c, nc) + -- cnng <- optionalRestrict queryContextNodeNgramsTable -< + -- \cnng' -> (cnng' ^. cnng_node_id) .== (nc ^. nc_node_id) .&& + -- (cnng' ^. cnng_context_id) .== (c ^. cs_id) returnA -< FacetDoc { facetDoc_id = _cs_id c , facetDoc_created = _cs_date c , facetDoc_title = _cs_name c , facetDoc_hyperdata = _cs_hyperdata c , facetDoc_category = nc ^. nc_category - , facetDoc_ngramCount = fromMaybeFields 0 $ _cnng_doc_count <$> cnng -- toNullable $ nc^.nc_score + , facetDoc_ngramCount = fromIntegral agg + -- , facetDoc_ngramCount = fromMaybeFields 0 $ _cnng_doc_count <$> cnng -- toNullable $ nc^. + nc_score -- , facetDoc_ngramCount = toNullable $ toFields cnt , facetDoc_score = nc ^. nc_score } +aggQ ncId cId = proc () -> do + cnng <- queryContextNodeNgramsTable -< () + restrict -< (cnng ^. cnng_node_id) .== ncId + restrict -< (cnng ^. cnng_context_id) .== cId + returnA -< (cnng ^. cnng_doc_count) + -- TODO Join with context_node_ngrams at context_id/node_id and sum by -- doc_count. viewDocumentsQuery :: CorpusId diff --git a/src/Gargantext/Database/Schema/ContextNodeNgrams.hs b/src/Gargantext/Database/Schema/ContextNodeNgrams.hs index d719844d75f32b7859ebe735890dd76822ffe379..caa625a4356b354ce14b780f05c83c64522667da 100644 --- a/src/Gargantext/Database/Schema/ContextNodeNgrams.hs +++ b/src/Gargantext/Database/Schema/ContextNodeNgrams.hs @@ -18,7 +18,7 @@ Portability : POSIX module Gargantext.Database.Schema.ContextNodeNgrams where -import Prelude +import Protolude import Gargantext.Core.Types (TermsCount) import Gargantext.Database.Schema.Prelude import Gargantext.Database.Schema.Ngrams (NgramsTypeId, NgramsId) @@ -29,6 +29,11 @@ import Gargantext.Database.Admin.Types.Node type ContextNodeNgrams = ContextNodeNgramsPoly ContextId ListId NgramsId NgramsTypeId Double TermsCount +type ContextNodeNgramsTest = + ContextNodeNgramsPoly ContextId ListId NgramsId Int Double TermsCount +type ContextNodeNgramsTest' = + ContextNodeNgramsPoly ContextId ListId NgramsId Int Double Int64 + data ContextNodeNgramsPoly c n ngrams_id ngt w dc = ContextNodeNgrams { _cnng_context_id :: !c @@ -55,6 +60,22 @@ type ContextNodeNgramsRead = (Field SqlFloat8) (Field SqlInt4 ) +type ContextNodeNgramsAgg = + ContextNodeNgramsPoly (Field SqlInt4 ) + (Field SqlInt4 ) + (Field SqlInt4 ) + (Field SqlInt4 ) + (Field SqlFloat8) + (Field SqlInt8 ) + +type ContextNodeNgramsAggPart = + ContextNodeNgramsPoly (Field SqlInt4 ) + (Field SqlInt4 ) + (Field SqlInt4 ) + (Field SqlInt4 ) + (Field SqlFloat8) + (Field SqlInt4 ) + $(makeAdaptorAndInstance "pContextNodeNgrams" ''ContextNodeNgramsPoly) makeLenses ''ContextNodeNgramsPoly