理解在solr中对查询排序

时间:2017-12-07 08:04:02

标签: sorting solr solr-query-syntax

我是solr的新手,并试图理解这样的solr排序标准 -

bQ01=2859969
bQ02={!term f=prdId v=$bQ01}
bQ03={!lucene} {!v=$bQ02}^=6

buryClearanceQuery={!parent which=$pq score=min v=$matchAllQueryRef2}
matchAllQueryRef2= ({!query v=$cq})  ({!simpleFilter v=$priceTypeClearance})
priceTypeClearance={!term f=priceType_refine v=$matchAllQueryRef3} 
matchAllQueryRef3=Clearance
cq= {!simpleFilter v=docType:pdf}   {!docValues v='shelf_873:1'}
sort=query($bQ03,0) desc, query($buryClearanceQuery) asc

我正面临着了解上述排序标准的方式以及query(some_expression, 0) desc将如何运作的问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

sort子句的参数通过参数传递到达那里。因此,基本上在Solr查询中,您可以通过$符号引用它。

Solr documentation

中更简单的例子
q={!type=dismax qf=myfield v=$qq}&qq=solr rocks

您的查询和sort子句中也会发生类似的事情。查询Sorting的工作方式如下:

  

Solr可以根据文档分数或分类对查询响应进行排序   具有单个值的任何字段的值

,而不是sort子句,您可以指定要排序的字段,或查询(可以是普通查询或function query) - 这会生成单个“伪”字段(得分)