Filter Django haystack在田地之间用OR运算符缩小

Filter Django haystack在田地之间用OR运算符缩小,filter,django-haystack,narrowing,Filter,Django Haystack,Narrowing,我做搜索。我通过字段A缩小范围。我通过字段B缩小范围。我得到的结果包括粗麻布和麻袋。我想得到的结果包括麻袋或麻袋 sqs = sqs.narrow(fieldA='burlap') sqs = sqs.narrow(fieldB='sack') 您可以通过以下操作进行某种程度的调整或缩小: sqs = sqs.narrow(fieldA=('burlap' or 'tweed' or 'plastic')) sqs = sqs.narrow(fieldB='sack') 但你还是会以麻袋和麻

我做搜索。我通过字段A缩小范围。我通过字段B缩小范围。我得到的结果包括粗麻布和麻袋。我想得到的结果包括麻袋或麻袋

sqs = sqs.narrow(fieldA='burlap')
sqs = sqs.narrow(fieldB='sack')
您可以通过以下操作进行某种程度的调整或缩小:

sqs = sqs.narrow(fieldA=('burlap' or 'tweed' or 'plastic'))
sqs = sqs.narrow(fieldB='sack')
但你还是会以麻袋和麻袋收场。此方法的另一种选择是以下方法,但它并不理想,因为它在大型数据集上的速度似乎较慢:

sqs = sqs.filter_or(fieldA='burlap')
sqs = sqs.filter_or(fieldB='sack')
当你需要Daniel Lindsay时,他在哪里?

YMMV--docs()指出此方法在后端之间不可移植,语法取决于后端。该部分中的示例甚至有一个看起来像lucene的“SearchQuerySet().窄带('title:smoothie')”示例

在源代码中,看起来haystack非常信任地将您的狭隘论点传递到后端。您没有说您使用的是什么后端,但可能类似的内容会让您在solr中获得所需的fq:

    sqs = sqs.narrow('fieldA:burlap OR fieldB:sack')
滤器是一种不同于窄体动物的动物,至少对solr来说是这样。Filter_或将该子句添加到主查询中,从而产生不同的结果集、不同的评分等。窄带将创建一个筛选查询。相反,它被用来过滤原始结果(令人震惊,对吧?),并且可以缓存,如果您打算大量使用该过滤器,这将有助于提高性能

哦,我输入了所有的东西,但仍然不知道丹尼尔·林赛在哪里