Почему django-sphinx выдает только 20 результатов? Как я могу получить отдых?
Выполнение поиска с использованием django-sphinx дает мне results._sphinx, который говорит, что было 68 результатов, но когда я перебираю их, я могу получить только первые 20 из них.
Я уверен, что есть способ обойти это, и что это сделано специально, но это чертовски неприятно для меня. Кто-нибудь знает, как получить полный набор запросов?
3 ответа
Я наконец понял это.
Очевидно, наборы запросов возвращают только 20 совпадений, пока вы не получите доступ к набору запросов. Или что-то типа того.
Итак, если вы явно хотите итерации по всему, вы должны сделать:
for result in results[0:results.count()]:
print result
Или что-то в этом роде, которое явно запросит все это. Тьфу. Это должно быть четко задокументировано... но это не так.
После взлома исходного кода я явно установил переменную _limit. Выполняет работу и выдает фактическое ограничение:
qs = MyEntity.search.query(query_string)
qs._limit = limit
for result in qs:
print result
Работа для меня:
в конфигурационном файле sphinx:
max_matches = 5000
в коде Django:
desc_obj = Dictionary.search.query( search_desc )
desc_obj._maxmatches = 5000
или в настройках:
SPHINX_MAX_MATCHES = 5000