Джанго Хейстек отказывается показывать результаты, даже по абсурдным запросам - PullRequest
2 голосов
/ 13 мая 2011

Мой вопрос может быть немного странным, но он беспокоит меня, поскольку поведение не соответствует ожиданиям. Вот мой запрос:

query = request.GET.get('q','')
#in search_indexes:
#start_datetime = indexes.DateTimeField(model_attr='start_datetime',null=True)
#end_datetime = indexes.DateTimeField(model_attr='end_datetime')
search_events = SearchQuerySet().models(Event).filter(content=query).
                filter(end_datetime__gte=datetime.now()).
                order_by("start_datetime")

Теперь я набираю запрос типа "asdfasdfjasldf lolol hwtf asdlfka" и все равно получаю 3 результата. (Обратите внимание, у меня есть только 5 событий для начала. Не уверен, что это может повлиять на что-либо.) Я распечатываю результаты, и они равны [42,42,42]. filter() не соответствует точным фразам? Особенно, если я использую кавычки?

// редактировать Я также пытался использовать auto_query, и результаты такие же.

Я действительно запутался в том, что происходит, так что, надеюсь, кто-нибудь может помочь разобраться с этим. Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Оказывается, что кто-то в моей команде установил для HAYSTACK_DEFAULT_OPERATOR значение «ИЛИ» вместо «И». Объясняет все - дополнительный тег фильтра фактически увеличивает количество результатов!

1 голос
/ 13 мая 2011

Вы можете выполнить поиск, используя auto_query():

search_events = SearchQuerySet().models(Event)
                                .auto_query(query)
                                .filter(end_datetime__gte=datetime.now())
                                .order_by("start_datetime")

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

...