Django Haystack: цикл по результатам SearchQuerySet очень медленный - PullRequest
0 голосов
/ 12 апреля 2019

Я использую Django 2.1 / Python 3.6 с Django Haystack / Whoosh в качестве поисковой системы для базы данных из 25 тыс. Объектов. Я хотел бы построить таблицу (DataTable) с результатами поиска.

Однако цикл по результатам SearchQuerySet примерно в 7 раз медленнее, чем цикл по page.object_list, заданному формой / представлением стога сена по умолчанию.

Мой поисковый_индекс:

class MyModelIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)

    def get_model(self):
        return MyModel

    def index_queryset(self, using=None):
        return self.get_model().objects.all()

Мое сравнение следующее:

Тест A: Я использую форму / представление стога сена по умолчанию для поиска kerword. Для возврата 81 результата требуется менее секунды, и все они на одной странице (HAYSTACK_SEARCH_RESULTS_PER_PAGE = 100).

Тест Б: Я делаю запрос самостоятельно в коде и преобразую его в список, чтобы я мог отправить этот список для построения своей таблицы данных:

from haystack.query import SearchQuerySet
results = list(SearchQuerySet().models(MyModel).filter(text='keyword')) 

Требуется 7 секунд, чтобы вернуть те же 81 результаты.

Я пытался выяснить, как стог сена строит page.object_list, однако у меня ничего не получилось. Я хотел бы знать, что я делаю неправильно.

Заранее спасибо.

...