我从solr 7.7.1检索特定类别的结果,我想按用户对结果进行多样化。每当访客查看类别时,都应该可见来自多个来源的最新和相关数据。
数据来自用户导入,并且每当导入完成时,就会有一个用户控制该类别的第一页。我想确保第一页上有许多用户提供的多样化但相关的报价。
我当前的查询针对类别进行过滤并按价格排序:
select?
q=*:*&
start=0&
rows=50&
fq=type:classifieds&
fq={!tag=cat_main}cat_main_id:15&
fl=*,score&
sort=date_created%20desc
我尝试根据库存可用性,价格进行不同的排序,还尝试了合并排序。
$this->query->addSortField( 'date_created', SolrQuery::ORDER_DESC );
// $this->query->addSortField( 'avail_id', SolrQuery::ORDER_DESC );
// $this->query->addSortField( 'price', SolrQuery::ORDER_ASC );
他们都没有带来多样性,但结果却更糟。
然后我尝试按user_id分组:
$this->query->setGroup(true);
$this->query->addGroupField( 'user_id' );
但这不仅缩小了分页内的结果数量,而且更重要地返回了一个不同的json响应,这将花费巨大的精力来重写我的应用程序。
如何确保一个用户返回的结果不多?