Я использую 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
, однако у меня ничего не получилось. Я хотел бы знать, что я делаю неправильно.
Заранее спасибо.