我正在使用Haystack使用Solr搜索Django应用程序。为了获得更精确的结果,我不得不更改搜索查询以执行精确搜索 -
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())
这两者有什么区别?
SQ
继承自 Django 的 Q
对象,并将使用 Django exact
字段查找。
Exact
是一个做自己事情的 Haystack 类。(但很可能最终得到相同的查询)
文档声明它们是等效的,因此您使用的并没有太大区别。