@@ -9,6 +9,8 @@ module Share.Postgres.Search.DefinitionSearch.Queries
9
9
defNameSearch ,
10
10
definitionSearch ,
11
11
DefnNameSearchFilter (.. ),
12
+ -- Exported for logging/debugging
13
+ searchTokensToTsQuery ,
12
14
)
13
15
where
14
16
@@ -195,7 +197,7 @@ searchTokenToText shouldAddWildcards = \case
195
197
TypeTagToken typTag -> makeSearchToken tagType (typeTagText typTag) Nothing
196
198
TypeModToken mod -> makeSearchToken typeModType (typeModText mod ) Nothing
197
199
where
198
- addWildCard token = if shouldAddWildcards then (token <> " . :*" ) else token
200
+ addWildCard token = if shouldAddWildcards then (token <> " :*" ) else token
199
201
typeModText = \ case
200
202
DD. Structural -> " structural"
201
203
DD. Unique {} -> " unique"
@@ -317,8 +319,8 @@ definitionSearch mayCaller mayFilter limit searchTokens preferredArity = do
317
319
rows <-
318
320
queryListRows @ (ProjectId , ReleaseId , Name , Hasql. Jsonb )
319
321
[sql |
320
- WITH matches_deduped_by_project(project_id, release_id, name, arity, metadata, num_search_tokens ) AS (
321
- SELECT DISTINCT ON (doc.project_id, doc.name) doc.project_id, doc.release_id, doc.name, doc.arity, doc.metadata, length( doc.search_tokens) FROM global_definition_search_docs doc
322
+ WITH matches_deduped_by_project(project_id, release_id, name, arity, metadata, search_tokens ) AS (
323
+ SELECT DISTINCT ON (doc.project_id, doc.name) doc.project_id, doc.release_id, doc.name, doc.arity, doc.metadata, doc.search_tokens FROM global_definition_search_docs doc
322
324
JOIN projects p ON p.id = doc.project_id
323
325
JOIN project_releases r ON r.id = doc.release_id
324
326
WHERE
@@ -330,11 +332,11 @@ definitionSearch mayCaller mayFilter limit searchTokens preferredArity = do
330
332
) SELECT m.project_id, m.release_id, m.name, m.metadata
331
333
FROM matches_deduped_by_project m
332
334
-- Score matches by:
333
- -- * Whether arity is equal or greater than the preferred arity
334
- -- * Whether the return type of the query matches the type signature
335
- -- * Prefer shorter arities
336
- -- * Prefer less complex type signatures (by number of tokens)
337
- ORDER BY (m.arity >= #{preferredArity}) DESC, tsquery(#{returnTokensText}) @@ doc .search_tokens DESC, m.arity ASC, m.num_search_tokens ASC
335
+ -- - Whether arity is equal or greater than the preferred arity
336
+ -- - Whether the return type of the query matches the type signature
337
+ -- - Prefer shorter arities
338
+ -- - Prefer less complex type signatures (by number of tokens)
339
+ ORDER BY (m.arity >= #{preferredArity}) DESC, tsquery(#{returnTokensText}) @@ m .search_tokens DESC, m.arity ASC, length(m.search_tokens) ASC
338
340
LIMIT #{limit}
339
341
|]
340
342
rows & traverseOf (traversed . _4) \ (Hasql. Jsonb v) -> do
0 commit comments