projects / org / contextualcode / ibexa-solr-search-query-boost
Find the Exponential Software extensions you want
| UNIX name | Owner | Status |
|---|---|---|
| ibexa-solr-search-query-boost | Contextual Code | stable |
| Version | Compatible with |
|---|---|
| N/A | N/A |
This package implements query boosting for the Solr search query in Ibexa DXP.
Require via composer:
composer require contextualcode/ibexa-solr-search-query-boost
You need to use ContextualCode\IbexaSolrSearchQueryBoost\Query\Criterion\FullText instead of eZ\Publish\API\Repository\Values\Content\Query\Criterion\FullText:
...
- use eZ\Publish\API\Repository\Values\Content\Query\Criterion\FullText;
+ use ContextualCode\IbexaSolrSearchQueryBoost\Query\Criterion\FullText;
...
New queryBoost parameter is available for the updated FullText criteria. It expects to have fields and/or types parameters:
...
- $fullTextQuery = new FullText('test');
+ $fullTextQuery = new FullText('test', ['queryBoost' => $queryBoost]);
...
The example src/Controller/CustomSearch.php controller with implemented query boost:
namespace App\Controller;
use eZ\Publish\API\Repository\SearchService;
use eZ\Publish\API\Repository\Values\Content\Query;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use ContextualCode\IbexaSolrSearchQueryBoost\Query\Criterion\FullText;
class CustomSearch extends AbstractController
{
private $searchService;
public function __construct(SearchService $searchService) {
$this->searchService = $searchService;
}
public function search(Request $request): JsonResponse
{
$queryBoost = [
'fields' => [
'article' => ['title' => 5, 'intro' => 2],
'folder' => ['name' => 3],
],
'types' => ['article' => 10, 'folder' => 0.8],
];
$query = new Query([
'query' => new FullText('test', ['queryBoost' => $queryBoost])
]);
$results = $this->searchService->findContent($query);
return new JsonResponse($results);
}
}