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
11
Merge Requests
11
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