我正在使用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
答案 0 :(得分:0)
如果要将生成的文档集限制为包含john
或sam
的文档,请使用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)')
因此,基本上没有严格的规则/标准来规定如何在网址中实现多个值以进行构面。