面对haystack中同一场的多个值

时间:2016-03-28 15:47:47

标签: solr django-haystack

我正在使用Haystack和SOLR。我正在尝试在一个字段上实现多个值的分面搜索。例如,我正面对“作者”字段。

john 3
kevin 2
sam 2

我想在“约翰”或“山姆”面前表达。如何格式化URL?

http://localhost:8000/search/?q=*&selected_facets=author_exact:john +OR+ selected_facets=author_exact:sam

2 个答案:

答案 0 :(得分:0)

如果要将生成的文档集限制为包含johnsam的文档,请使用fq

fq=author:sam OR author:john

如果您只想生成特定值或查询的构面,请使用facet.query

facet.query=author:sam OR author:john

答案 1 :(得分:0)

您将不得不在视图/表单中将OR与arrow()结合使用(确切的实现方式取决于您所使用的视图/表单)。

由于获取selected_facets列表仅涉及:   self.request.GET.getlist('selected_facets')

您希望如何在网址中实现该功能完全取决于您:

  • 您可以使用某种分隔符,然后将它们分开:
    localhost:8000 / search /?q = *&selected_facets = author_exact:john | sam

    `selected_facets中的x: field_name,值= x.split(':',1)

    如果“ |”没有价值:    继续
    值= x.split('|')`

  • 您也可以这样操作:
    localhost:8000 / search / q = *&selected_facets = author_exact:john&selected_facets = author_exact:sam

    facet_dict = dict() 对于selected_facets中的x:   field_name,值= x.split(':',1)
      facet_dict [field_name] .append(value)

然后在干草堆中:    sqs.narrow('author_exact:(john OR sam)')

因此,基本上没有严格的规则/标准来规定如何在网址中实现多个值以进行构面。