Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
158
Issues
158
List
Board
Labels
Milestones
Merge Requests
10
Merge Requests
10
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
haskell-gargantext
Commits
ca8ff794
Commit
ca8ff794
authored
Oct 24, 2018
by
Alexandre Delanoë
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[DBFLOW] NodeNgrams insertion with typed ngrams.
parent
cd3c7b82
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
45 additions
and
20 deletions
+45
-20
Flow.hs
src/Gargantext/Database/Flow.hs
+20
-11
Ngram.hs
src/Gargantext/Database/Ngram.hs
+5
-0
NodeNgram.hs
src/Gargantext/Database/NodeNgram.hs
+20
-9
No files found.
src/Gargantext/Database/Flow.hs
View file @
ca8ff794
...
...
@@ -39,8 +39,9 @@ import Gargantext.Database.Node (getRoot, mkRoot, mkCorpus, Cmd(..))
import
Gargantext.Database.User
(
getUser
,
UserLight
(
..
),
Username
)
import
Gargantext.Database.Node.Document.Insert
(
insertDocuments
,
ReturnId
(
..
),
addUniqIds
)
import
Gargantext.Database.Node.Document.Add
(
add
)
import
Gargantext.Database.NodeNgram
(
NodeNgramPoly
(
..
),
insertNodeNgrams
)
import
Gargantext.Text.Parsers
(
parseDocs
,
FileFormat
(
WOS
))
import
Gargantext.Database.Ngram
(
insertNgrams
,
Ngrams
(
..
),
NgramsT
(
..
),
NgramsIndexed
(
..
),
indexNgramsT
)
import
Gargantext.Database.Ngram
(
insertNgrams
,
Ngrams
(
..
),
NgramsT
(
..
),
NgramsIndexed
(
..
),
indexNgramsT
,
ngramsTypeId
)
type
UserId
=
Int
type
RootId
=
Int
...
...
@@ -128,25 +129,33 @@ documentIdWithNgrams :: (HyperdataDocument -> Map (NgramsT Ngrams) Int)
documentIdWithNgrams
f
=
map
(
\
d
->
DocumentIdWithNgrams
d
((
f
.
documentData
)
d
))
-- | TODO check optimization
mapNodeIdNgrams
::
[
DocumentIdWithNgrams
]
->
Map
(
NgramsT
Ngrams
)
[(
NodeId
,
Int
)]
mapNodeIdNgrams
ds
=
DM
.
fromListWith
(
<>
)
xs
mapNodeIdNgrams
::
[
DocumentIdWithNgrams
]
->
Map
(
NgramsT
Ngrams
)
(
Map
NodeId
Int
)
mapNodeIdNgrams
ds
=
DM
.
map
(
DM
.
fromListWith
(
+
))
$
DM
.
fromListWith
(
<>
)
xs
where
xs
=
[(
ng
,
[(
nId
,
i
)])
|
(
nId
,
n2i'
)
<-
n2i
ds
,
(
ng
,
i
)
<-
DM
.
toList
n2i'
]
n2i
=
map
(
\
d
->
((
documentId
.
documentWithId
)
d
,
document_ngrams
d
))
indexNgrams
::
Map
(
NgramsT
Ngrams
)
[(
NodeId
,
Int
)]
->
Cmd
(
Map
(
NgramsT
NgramsIndexed
)
[(
NodeId
,
Int
)]
)
indexNgrams
::
Map
(
NgramsT
Ngrams
)
(
Map
NodeId
Int
)
->
Cmd
(
Map
(
NgramsT
NgramsIndexed
)
(
Map
NodeId
Int
)
)
indexNgrams
ng2nId
=
do
terms2id
<-
insertNgrams
(
map
_ngramsT
$
DM
.
keys
ng2nId
)
pure
$
DM
.
mapKeys
(
indexNgramsT
terms2id
)
ng2nId
---- insert to NodeNgram
---- using insertNgrams from
--indexNgram :: Map Ngram (Map NodeId Int) -> Map NgramId (Map NodeId Int)
--indexNgram = undefined
insertToNodeNgrams
::
Map
(
NgramsT
NgramsIndexed
)
(
Map
NodeId
Int
)
->
Cmd
Int
insertToNodeNgrams
m
=
insertNodeNgrams
$
[
NodeNgram
Nothing
nId
((
_ngramsId
.
_ngramsT
)
ng
)
(
fromIntegral
n
)
((
ngramsTypeId
.
_ngramsType
)
ng
)
|
(
ng
,
nId2int
)
<-
DM
.
toList
m
,
(
nId
,
n
)
<-
DM
.
toList
nId2int
]
-- group Ngrams
-- insert GroupId
-- mk List Group
-- group by fun
-- insertInto NodeNgramsNgrams
-- get data of NgramsTable
-- change List of ngrams
-- group ngrams
src/Gargantext/Database/Ngram.hs
View file @
ca8ff794
...
...
@@ -83,6 +83,11 @@ import qualified Database.PostgreSQL.Simple as DPS
-- ngrams in text (title or abstract) of documents has Terms Type
data
NgramsType
=
Sources
|
Authors
|
Terms
ngramsTypeId
::
NgramsType
->
Int
ngramsTypeId
Terms
=
1
ngramsTypeId
Authors
=
2
ngramsTypeId
Sources
=
3
type
NgramsTerms
=
Text
type
NgramsId
=
Int
type
Size
=
Int
...
...
src/Gargantext/Database/NodeNgram.hs
View file @
ca8ff794
...
...
@@ -23,30 +23,33 @@ commentary with @some markup@.
module
Gargantext.Database.NodeNgram
where
import
Prelude
import
Gargantext.
Prelude
import
Data.Profunctor.Product.TH
(
makeAdaptorAndInstance
)
import
Control.Lens.TH
(
makeLensesWith
,
abbreviatedFields
)
import
Gargantext.Database.Node
(
mkCmd
,
Cmd
(
..
))
import
Opaleye
data
NodeNgramPoly
id
node_id
ngram_id
weight
data
NodeNgramPoly
id
node_id
ngram_id
weight
ngrams_type
=
NodeNgram
{
nodeNgram_NodeNgramId
::
id
,
nodeNgram_NodeNgramNodeId
::
node_id
,
nodeNgram_NodeNgramNgramId
::
ngram_id
,
nodeNgram_NodeNgramWeight
::
weight
,
nodeNgram_NodeNgramType
::
ngrams_type
}
deriving
(
Show
)
type
NodeNgramWrite
=
NodeNgramPoly
(
Column
PGInt4
)
type
NodeNgramWrite
=
NodeNgramPoly
(
Maybe
(
Column
PGInt4
)
)
(
Column
PGInt4
)
(
Column
PGInt4
)
(
Column
PGFloat8
)
(
Column
PGInt4
)
type
NodeNgramRead
=
NodeNgramPoly
(
Column
PGInt4
)
(
Column
PGInt4
)
(
Column
PGInt4
)
(
Column
PGFloat8
)
(
Column
PGInt4
)
type
NodeNgram
=
NodeNgramPoly
Int
Int
Int
Double
type
NodeNgram
=
NodeNgramPoly
(
Maybe
Int
)
Int
Int
Double
Int
$
(
makeAdaptorAndInstance
"pNodeNgram"
''
N
odeNgramPoly
)
$
(
makeLensesWith
abbreviatedFields
''
N
odeNgramPoly
)
...
...
@@ -54,13 +57,21 @@ $(makeLensesWith abbreviatedFields ''NodeNgramPoly)
nodeNgramTable
::
Table
NodeNgramWrite
NodeNgramRead
nodeNgramTable
=
Table
"nodes_ngrams"
(
pNodeNgram
NodeNgram
{
nodeNgram_NodeNgramId
=
required
"id"
{
nodeNgram_NodeNgramId
=
optional
"id"
,
nodeNgram_NodeNgramNodeId
=
required
"node_id"
,
nodeNgram_NodeNgramNgramId
=
required
"ngram_id"
,
nodeNgram_NodeNgramWeight
=
required
"weight"
,
nodeNgram_NodeNgramType
=
required
"ngrams_type"
}
)
queryNodeNgramTable
::
Query
NodeNgramRead
queryNodeNgramTable
=
queryTable
nodeNgramTable
insertNodeNgrams
::
[
NodeNgram
]
->
Cmd
Int
insertNodeNgrams
nns
=
insertNodeNgramW
$
map
(
\
(
NodeNgram
i
n
g
w
t
)
->
NodeNgram
Nothing
(
pgInt4
n
)
(
pgInt4
g
)
(
pgDouble
w
)
(
pgInt4
t
)
)
nns
insertNodeNgramW
::
[
NodeNgramWrite
]
->
Cmd
Int
insertNodeNgramW
nns
=
mkCmd
$
\
c
->
fromIntegral
<$>
runInsertMany
c
nodeNgramTable
nns
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment