我已经在https://math.stackexchange.com上问过,但是他们说我最好可以在这里问。我得到了以下数据:
$average_score
$max_score = 5
$min_score = 0.5
$total_reviews
$price
我没有数据,其中有多少条“好”评论或“坏”评论。就是您可以给的平均,总分,最低和最高分。
我收到这样的查询:
<?php
return array(
'post_type' => 'page',
'post_status' => 'publish',
'posts_per_page' => 10,
'facetwp' => true,
'meta_query' => array(
'featured_sort' => array(
'key' => 'featured',
'compare' => 'EXISTS'
),
array(
'key' => 'package-or-service',
'value' => array('hosting'),
'compare' => 'IN',
),
'price_sort' => array(
'key' => 'price',
'type' => 'DECIMAL(10,2)',
'compare' => 'EXISTS'
),
'average_score_sort' => array(
'key' => 'average_score_count',
'type' => 'DECIMAL(10,2)',
'compare' => 'EXISTS'
),
),
'orderby' => array(
'featured_sort' => 'DESC',
'average_score_sort' => 'DESC',
'price_sort' => 'ASC'
)
);
average_score_sort的计算方式如下:
$average_total = $average_score * $count_reviews / 100;
我也尝试过这种方法,仅用于平均排名和评论数(不包括价格)
$average_total = ($count_reviews/5)/($count_reviews/$average_score)*($count_reviews);
但是基本上是一样的。
我知道这不是最好的方法,但是我不知道如何以一种好的方式对其进行排序。我知道有类似Wilson Interval的东西,但不知道在这种情况下如何使用它,还不包括价格作为排序因子。
现在对结果进行这样的排序(公司有多种产品):
如您所见,这不太公平,我想根据平均值和评论数量以及价格从低到高对结果进行排序。这样它会更像这样:
编辑
到目前为止我得到的数据有可能吗?