Commit b3892b96 authored by Fabien Maniere's avatar Fabien Maniere

Merge branch '505-dev-search-query-performance-fix' into 'dev'

Resolve "On IMT Instance : Error message or crashes when changing the status of terms in large batch"

See merge request !445
parents e7ce7bcb e468ed1a
Pipeline #7939 passed with stages
in 75 minutes
...@@ -132,7 +132,8 @@ getOccByNgramsOnlyFast_withSample cId int nt ngs = ...@@ -132,7 +132,8 @@ getOccByNgramsOnlyFast_withSample cId int nt ngs =
HM.fromListWith (+) <$> selectNgramsOccurrencesOnlyByContextUser_withSample cId int nt ngs HM.fromListWith (+) <$> selectNgramsOccurrencesOnlyByContextUser_withSample cId int nt ngs
-- Returns occurrences of ngrams in given corpus/list (for each ngram, a list of contexts is returned) -- | Returns occurrences of ngrams in given corpus/list (for each
-- ngram, a list of contexts is returned)
getOccByNgramsOnlyFast :: CorpusId getOccByNgramsOnlyFast :: CorpusId
-> ListId -> ListId
-> NgramsType -> NgramsType
...@@ -154,34 +155,39 @@ getOccByNgramsOnlyFast cId lId nt = do ...@@ -154,34 +155,39 @@ getOccByNgramsOnlyFast cId lId nt = do
query :: DPS.Query query :: DPS.Query
query = [sql| query = [sql|
WITH cnnv AS WITH nc AS (
( SELECT DISTINCT context_node_ngrams.context_id, SELECT DISTINCT context_id
context_node_ngrams.ngrams_id,
nodes_contexts.node_id,
nodes_contexts.category
FROM nodes_contexts FROM nodes_contexts
JOIN context_node_ngrams ON context_node_ngrams.context_id = nodes_contexts.context_id WHERE node_id = ?
AND category > 0
), ),
node_context_ids AS cnnv AS
(SELECT context_id, ngrams_id, terms ( SELECT DISTINCT context_id,
FROM cnnv ngrams_id
JOIN ngrams ON cnnv.ngrams_id = ngrams.id FROM context_node_ngrams
WHERE node_id = ? AND cnnv.category > 0 WHERE context_id IN (SELECT context_id FROM nc)
), ),
ncids_agg AS ncids_agg AS
(SELECT ngrams_id, terms, array_agg(DISTINCT context_id) AS agg ( SELECT array_agg(DISTINCT context_id) AS agg,
FROM node_context_ids ngrams_id,
GROUP BY (ngrams_id, terms)), terms
FROM cnnv
JOIN ngrams
ON cnnv.ngrams_id = ngrams.id
GROUP BY (ngrams_id, terms)
),
ns AS ns AS
(SELECT ngrams_id, terms (SELECT ngrams_id, terms
FROM node_stories FROM node_stories
JOIN ngrams ON ngrams_id = ngrams.id JOIN ngrams
ON ngrams_id = ngrams.id
WHERE node_id = ? AND ngrams_type_id = ? WHERE node_id = ? AND ngrams_type_id = ?
) )
SELECT ns.terms, CASE WHEN agg IS NULL THEN '{}' ELSE agg END SELECT ns.terms, CASE WHEN agg IS NULL THEN '{}' ELSE agg END
FROM ns FROM ns
LEFT JOIN ncids_agg ON ns.ngrams_id = ncids_agg.ngrams_id LEFT JOIN ncids_agg
ON ns.ngrams_id = ncids_agg.ngrams_id
|] |]
-- query = [sql| -- query = [sql|
-- WITH node_context_ids AS -- WITH node_context_ids AS
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment