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
147
Issues
147
List
Board
Labels
Milestones
Merge Requests
6
Merge Requests
6
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
50da0736
Commit
50da0736
authored
Apr 19, 2018
by
Alexandre Delanoë
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[FEAT] Full Text Search query Doc facet.
parent
c38864f4
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
67 additions
and
0 deletions
+67
-0
TextSearch.hs
src/Gargantext/Database/TextSearch.hs
+67
-0
No files found.
src/Gargantext/Database/TextSearch.hs
0 → 100644
View file @
50da0736
{-|
Module : Gargantext.Database.TextSearch
Description :
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
Maintainer : team@gargantext.org
Stability : experimental
Portability : POSIX
Here is a longer description of this module, containing some
commentary with @some markup@.
-}
--{-# LANGUAGE NoImplicitPrelude #-}
--{-# LANGUAGE OverloadedStrings #-}
module
Gargantext.Database.TextSearch
where
import
Prelude
(
print
)
import
Gargantext
(
connectGargandb
)
import
Data.Aeson
import
Database.PostgreSQL.Simple
import
Control.Applicative
import
Control.Monad
import
Data.Text
(
Text
)
import
Gargantext.Prelude
type
TextQuery
=
Text
type
ParentId
=
Int
type
Limit
=
Int
type
Offset
=
Int
data
Order
=
Asc
|
Desc
toQuery
::
Order
->
Query
toQuery
Asc
=
"ASC"
toQuery
Desc
=
"DESC"
-- TODO
-- FIX fav
-- ADD ngrams count
-- TESTS
textSearchQuery
::
Order
->
Query
textSearchQuery
o
=
"SELECT n.id, n.hyperdata -> 'publication_date'
\
\
, n.hyperdata -> 'title'
\
\
, n.hyperdata -> 'source'
\
\
, COALESCE(nn.score,null)
\
\
FROM nodes n
\
\
LEFT JOIN nodes_nodes nn ON nn.node2_id = n.id
\
\
WHERE
\
\
n.title_abstract @@ to_tsquery(?)
\
\
AND n.parent_id = ? AND n.typename = 4
\
\
ORDER BY n.hyperdata -> 'publication_date' "
<>
toQuery
o
<>
" offset ? limit ?;"
textSearch
::
Connection
->
TextQuery
->
ParentId
->
Limit
->
Offset
->
Order
->
IO
[(
Int
,
Value
,
Value
,
Value
,
Maybe
Int
)]
textSearch
conn
q
p
l
o
ord
=
query
conn
(
textSearchQuery
ord
)
(
q
,
p
,
o
,
l
)
textSearchTest
::
TextQuery
->
IO
()
textSearchTest
q
=
connectGargandb
"gargantext.ini"
>>=
\
conn
->
textSearch
conn
q
421968
10
0
Asc
>>=
mapM_
print
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