symfony - Symfony 4 Match Against 按相关性排序
问题描述
我想按 revelance 排序,这意味着如果我在 db 中有:
- 福巴
- 富吧
- FooB
- 富
我想输入foo它将被排序:
- 富
- FooB
- 福巴
- 富吧
public function findBySearchQueryPagin2(string $rawQuery, int $limit = 999, string $sort = "DESC", string $sortBy = "relevance", int $page = 1): pagerfanta
{
$query = $this->sanitizeSearchQuery($rawQuery);
$sort = $this->sanitizeSearchQuery($sort);
$sortBy = $this->sanitizeSearchQuery($sortBy);
$limit = $this->sanitizeSearchQuery($limit);
$page = $this->sanitizeSearchQuery($page);
if(($sort != 'ASC')&&($sort != 'DESC')) $sort = 'DESC';
if(($sortBy != 'date')&&($sortBy != 'name')&&($sortBy != 'relevance')){
$sortBy = null;
} else {
if($sortBy=="name") $sortBy = "primarytitle";
if($sortBy=="date") $sortBy = "startyear";
if($sortBy=="relevance") $sortBy = "relevance";
}
$queryBuilder = $this->createQueryBuilder('p')
->andWhere("MATCH_AGAINST (p.primarytitle, :searchTerms) > 1")
->setParameter('searchTerms', $query)
->setMaxResults($limit);
var_dump($query);
if($sortBy !== "relevance"){
$queryBuilder
->orderBy('p.' . $sortBy, $sort);
}
return $this->createPaginator($queryBuilder->getQuery(), $page);
}
解决方案
推荐阅读
- javascript - 我的提交按钮没有将我发送到下一页
- reactjs - 如何在全局错误上触发 Sentry.io ErrorBoundary 回退
- kotlin - 背压在 flatMap 和多个 observeOn 的链中不受尊重
- python - 如何将元素放在一行中的np数组中的特定位置
- css - 当字体中缺少给定的字形、字符、符号、dingbat 等时,Web 浏览器如何处理这种情况?
- python - 在某个 X 刻度值处开始水平 pyqtgraph 的 LinearRegionItem
- assembly - 错误 A2105:预期:指令或指令 - MASM
- java - 如何在android开源项目中找到特定屏幕的代码?
- javascript - 使用 Express.js 和 TypeScript 从 Node.js 下载文件
- python - 如何获取元组元组的第一项