Full-text search using postgresql #162
@ -129,8 +129,9 @@ class SearchView(ListedExtensionsView):
|
||||
def postgres_fts(self, queryset, search_query):
|
||||
"""Postgres full text search (fast) and a fuzzy trigram search (slow) as a fallback.
|
||||
|
||||
Searches Extension name and description only. If we need to extend the functionality,
|
||||
it's better to consider using a different approach, e.g. introduce meilisearch.
|
||||
Searches Extension name and description only, ranking name matches higher.
|
||||
If we need to extend the functionality, it's better to consider using a different approach,
|
||||
e.g. introduce meilisearch.
|
||||
|
||||
Limits the results size to 32 items (2 pages), assuming that nobody will click through many
|
||||
pages if we failed to present the vital results on the first page.
|
||||
@ -150,6 +151,10 @@ class SearchView(ListedExtensionsView):
|
||||
(to_tsvector('english', name) || ' ' || to_tsvector('english', description))
|
||||
@@ websearch_to_tsquery('english', %(query)s)
|
||||
) and is_listed
|
||||
order by ts_rank(
|
||||
to_tsvector('english', name),
|
||||
websearch_to_tsquery('english', %(query)s)
|
||||
) desc
|
||||
limit 32"""
|
||||
cursor.execute(sql, {'query': search_query})
|
||||
pks = [row[0] for row in cursor.fetchall()]
|
||||
|
Loading…
Reference in New Issue
Block a user