Почему 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
Другие вопросы по тегам