Skip to content

Commit 793d698

Browse files
authored
Merge pull request #78 from unisoncomputing/cp/project-search-fixups
Project search fixups
2 parents 715e003 + 5c24f7c commit 793d698

File tree

4 files changed

+32
-3
lines changed

4 files changed

+32
-3
lines changed

src/Share/Postgres/Queries.hs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,22 @@ searchProjects caller userIdFilter (Query query) limit = do
170170
SELECT p.id, p.owner_user_id, p.slug, p.summary, p.tags, p.private, p.created_at, p.updated_at, owner.handle
171171
FROM to_tsquery('english', #{queryToken}) AS tokenquery, projects AS p
172172
JOIN users AS owner ON p.owner_user_id = owner.id
173-
WHERE (tokenquery @@ p.project_text_document OR p.slug ILIKE (like_escape(#{query}) || '%'))
173+
WHERE (tokenquery @@ p.project_text_document OR p.slug ILIKE ('%' || like_escape(#{query}) || '%'))
174174
AND (NOT p.private OR (#{caller} IS NOT NULL AND EXISTS (SELECT FROM accessible_private_projects WHERE user_id = #{caller} AND project_id = p.id)))
175175
AND (#{userIdFilter} IS NULL OR p.owner_user_id = #{userIdFilter})
176-
ORDER BY ts_rank_cd(p.project_text_document, tokenquery) DESC, p.slug ASC
176+
ORDER BY
177+
p.slug = #{query} DESC,
178+
-- Prefer prefix matches
179+
p.slug ILIKE (like_escape(#{query}) || '%') DESC,
180+
-- Otherwise infix matches
181+
p.slug ILIKE ('%' || like_escape(#{query}) || '%') DESC,
182+
-- Prefer projects in the unison org
183+
COALESCE(FALSE, p.owner_user_id = (SELECT unison.id FROM users unison WHERE unison.handle = 'unison')) DESC,
184+
-- Prefer projects in the catalog
185+
EXISTS(SELECT FROM project_categories pc WHERE pc.project_id = p.id) DESC,
186+
ts_rank_cd(p.project_text_document, tokenquery) DESC,
187+
-- Lastly sort by name, just so results are deterministic
188+
p.slug ASC
177189
LIMIT #{limit}
178190
|]
179191
pure (results <&> \(project PG.:. PG.Only handle) -> (project, handle))

transcripts/share-apis/code-browse/run.zsh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ fetch "$transcripts_user" GET codebase-definition-by-hash-constructor "/users/tr
1919
fetch "$transcripts_user" GET codebase-find "/users/transcripts/projects/code-browse/branches/main/find?query=oranges.tw"
2020
fetch "$transcripts_user" GET codebase-namespace-by-name "/users/transcripts/projects/code-browse/branches/main/namespaces/by-name/names"
2121
fetch "$transcripts_user" GET codebase-namespace-by-name-root "/users/transcripts/projects/code-browse/branches/main/namespaces/by-name/"
22-
fetch "$transcripts_user" GET search "/search?query=te"
22+
fetch "$transcripts_user" GET search "/search?query=tes"
2323
fetch "$transcripts_user" GET account "/account"
2424
fetch "$transcripts_user" GET user-info "/user-info"
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"body": [
3+
{
4+
"projectRef": "@transcripts/search",
5+
"summary": null,
6+
"tag": "project",
7+
"visibility": "private"
8+
}
9+
],
10+
"status": [
11+
{
12+
"status_code": 200
13+
}
14+
]
15+
}

transcripts/share-apis/search/run.zsh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,5 @@ fetch "$transcripts_user" GET 'omni-search-orgs' '/search?query=%40uni'
9393

9494
# Omni search should find regular users
9595
fetch "$transcripts_user" GET 'omni-search-users' '/search?query=%40tes'
96+
# Omni search should find projects by infix
97+
fetch "$transcripts_user" GET 'omni-search-projects' '/search?query=%40ear'

0 commit comments

Comments
 (0)