2010-04-19 1 views
3

Выполнение поиска с использованием django-sphinx дает мне results._sphinx, который говорит, что было 68 результатов, но когда я перебираю их, я могу получить только первые 20 из них.Почему django-sphinx выводит только 20 результатов? Как я могу получить все остальное?

Я уверен, что есть способ обойти это, и что это по дизайну, но это официально вытесняет меня из себя. Кто-нибудь знает, как получить полный запрос?

+1

Я только что обнаружил это, что я мог бы просто изменить, но я беспокоюсь, что это здесь для моей собственной защиты: http://github.com/dcramer/django-sphinx /blob/master/djangosphinx/models.py#L206 – mlissner

+0

Я должен добавить, что изменение этого значения ничего не значило для меня. – mlissner

ответ

2

Я понял это окончательно.

По-видимому, запросы только возвращают 20 обращений, пока вы не получите доступ к запросу. Или что-то типа того.

Так что, если вы явно хотите перебрать все это, вы должны сделать:

for result in results[0:results.count()]: 
    print result 

или что-то, что эффект, который будет запрашивать всю вещь в явном виде. Тьфу. Это должно быть четко документировано ... но это не так.

0

После взлома через источник, я установил переменную _limit явно .. делает работу, и выдает фактический предел:

qs = MyEntity.search.query(query_string) 
qs._limit = limit 
for result in qs: 
    print result 
0

для меня работа:

в сфинкса конфигурационном файле:

max_matches  = 5000 

в Джанго код:

desc_obj = Dictionary.search.query(search_desc) 
    desc_obj._maxmatches = 5000 

или в настройки:

SPHINX_MAX_MATCHES = 5000