2016-05-25 4 views
2

Я использую Solr для поиска Django с помощью Haystack. Для того, чтобы получить более точный результат, я должен был изменить поисковый запрос, чтобы выполнить точный поиск -В чем разница между использованием __exact и Exact()?

from haystack.query import SearchQuerySet, SQ 
from haystack.inputs import Exact 

.... 
query = SQ(tags_indexed=Exact(val.lower())) 
sqs = SearchQuerySet().models(
        SampleModel).filter(query) 
... 

Теперь, другой путь вы можете сделать точный поиск, как указано в некоторой документации -

query = SQ(tags_indexed__exact=val.lower()) 

В чем разница между этими двумя?

ответ

1

SQ унаследовал от django's Q объект и будет использовать djangos exact поиск по полю.

Exact является классом Haystack, который делает свое дело. (но, скорее всего, заканчивается тем же запросом)

The docs утверждают, что они эквивалентны, поэтому вы не используете значительную разницу.

+0

Отлично! Спасибо, что указали на ссылку и объяснение. Причина, по которой я спрашиваю, это локально использовать whoosh с Haystack, и это не дает того же результата при использовании __exact vs Exact(). с whoosh с помощью Exact() дает правильный результат. – Mutant