Add search limits

This commit is contained in:
2021-12-10 15:40:07 +03:00
parent 7e825d099b
commit 962650175e
3 changed files with 11 additions and 8 deletions

View File

@@ -3,7 +3,7 @@ from app.models import Author
from app.services.common import TRGMSearchService from app.services.common import TRGMSearchService
GET_OBJECTS_IDS_QUERY = """ GET_OBJECT_IDS_QUERY = """
SELECT ARRAY( SELECT ARRAY(
WITH filtered_authors AS ( WITH filtered_authors AS (
SELECT SELECT
@@ -32,6 +32,7 @@ SELECT ARRAY(
) )
SELECT fauthors.id FROM filtered_authors as fauthors SELECT fauthors.id FROM filtered_authors as fauthors
ORDER BY fauthors.sml DESC, fauthors.books_count DESC ORDER BY fauthors.sml DESC, fauthors.books_count DESC
LIMIT 210
); );
""" """
@@ -39,4 +40,4 @@ SELECT ARRAY(
class AuthorTGRMSearchService(TRGMSearchService): class AuthorTGRMSearchService(TRGMSearchService):
MODEL_CLASS = Author MODEL_CLASS = Author
PREFETCH_RELATED = ["source", "annotations"] PREFETCH_RELATED = ["source", "annotations"]
GET_OBJECT_IDS_QUERY = GET_OBJECTS_IDS_QUERY GET_OBJECT_IDS_QUERY = GET_OBJECT_IDS_QUERY

View File

@@ -8,14 +8,15 @@ from app.services.common import TRGMSearchService
from app.serializers.book import CreateBook, CreateRemoteBook from app.serializers.book import CreateBook, CreateRemoteBook
GET_OBJECTS_IDS_QUERY = """ GET_OBJECT_IDS_QUERY = """
SELECT ARRAY( SELECT ARRAY(
WITH filtered_books AS ( WITH filtered_books AS (
SELECT id, similarity(title, :query) as sml FROM books SELECT id, similarity(title, :query) as sml FROM books
WHERE books.title % :query WHERE books.title % :query
) )
SELECT fbooks.id FROM filtered_books as fbooks SELECT fbooks.id FROM filtered_books as fbooks
ORDER BY fbooks.sml DESC, fbooks.id ORDER BY fbooks.sml DESC, fbooks.id
LIMIT 210
); );
""" """
@@ -23,7 +24,7 @@ SELECT ARRAY(
class BookTGRMSearchService(TRGMSearchService): class BookTGRMSearchService(TRGMSearchService):
MODEL_CLASS = BookDB MODEL_CLASS = BookDB
PREFETCH_RELATED = ["source", "authors", "annotations"] PREFETCH_RELATED = ["source", "authors", "annotations"]
GET_OBJECT_IDS_QUERY = GET_OBJECTS_IDS_QUERY GET_OBJECT_IDS_QUERY = GET_OBJECT_IDS_QUERY
class BookCreator: class BookCreator:

View File

@@ -3,8 +3,8 @@ from app.models import Sequence
from app.services.common import TRGMSearchService from app.services.common import TRGMSearchService
GET_OBJECTS_IDS_QUERY = """ GET_OBJECT_IDS_QUERY = """
EXPLAIN ANALYZE SELECT ARRAY ( SELECT ARRAY (
WITH filtered_sequences AS ( WITH filtered_sequences AS (
SELECT SELECT
id, id,
@@ -24,6 +24,7 @@ EXPLAIN ANALYZE SELECT ARRAY (
) )
SELECT fsequences.id FROM filtered_sequences as fsequences SELECT fsequences.id FROM filtered_sequences as fsequences
ORDER BY fsequences.sml DESC, fsequences.books_count DESC ORDER BY fsequences.sml DESC, fsequences.books_count DESC
LIMIT 210
); );
""" """
@@ -31,4 +32,4 @@ EXPLAIN ANALYZE SELECT ARRAY (
class SequenceTGRMSearchService(TRGMSearchService): class SequenceTGRMSearchService(TRGMSearchService):
MODEL_CLASS = Sequence MODEL_CLASS = Sequence
PREFETCH_RELATED = ["source"] PREFETCH_RELATED = ["source"]
GET_OBJECTS_IDS_QUERY = GET_OBJECTS_IDS_QUERY GET_OBJECT_IDS_QUERY = GET_OBJECT_IDS_QUERY