contextualcode/ibexa-solr-search-query-boost

实现了Ibexa DXP中Solr搜索查询的查询增强。

v2.0.0 2024-08-21 16:14 UTC

This package is not auto-updated.

Last update: 2024-09-18 16:41:14 UTC


README

本包实现了Ibexa DXP中Solr搜索查询的查询增强。

安装

通过composer安装

 composer require contextualcode/ibexa-solr-search-query-boost

使用方法

  1. 您需要使用 ContextualCode\IbexaSolrSearchQueryBoost\Query\Criterion\FullText 代替 eZ\Publish\API\Repository\Values\Content\Query\Criterion\FullText

     <?php 
     ...
     - use eZ\Publish\API\Repository\Values\Content\Query\Criterion\FullText;
     + use ContextualCode\IbexaSolrSearchQueryBoost\Query\Criterion\FullText;
     ...
    
  2. 新的 queryBoost 参数适用于更新的 FullText 标准。它期望有 fields 和/或 types 参数

     <?php 
     ...
     - $fullTextQuery = new FullText('test');
     + $fullTextQuery = new FullText('test', ['queryBoost' => $queryBoost]);
     ...
    

包含实现查询增强的示例控制器 src/Controller/CustomSearch.php

<?php

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);
    }
}