gnugat/search-engine-bundle

该软件包已被废弃,不再维护。未建议替代软件包。

symfony中的gnugat/search-engine集成

安装: 76

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

类型:symfony-bundle

v0.3.1 2015-12-01 10:28 UTC

This package is auto-updated.

Last update: 2022-02-01 12:50:33 UTC


README

gnugat/search-engine 中集成了 Symfony

注意:此组件不提供实际的SearchEngine功能,如果您正在寻找这样的功能,您最好查看ElasticSearch、Solr等。更多信息请参见 gnugat/search-engine网站

此软件包提供以下服务

  • gnugat_search_engine.criteria_factory:从请求查询参数创建 Criteria
  • gnugat_search_engine.identifier_engine:一个 IdentifierEngine 的实例
  • gnugat_search_engine.search_engine:一个 SearchEngine 的实例
  • gnugat_search_engine.type_sanitizer:一个 TypeSanitizer 的实例

为了使其正常工作,您需要

  1. 创建 Fetcher 的实现(或安装现有的一个,如 PommSearchEngine
  2. 将其定义为名为 gnugat_search_engine.fetcher 的服务

此外,为了能够找到任何内容,SearchEngineIdentifierEngine 都需要您添加有关可用资源的详细信息。这可以通过实现 SelectBuilder 并将其定义为服务来完成,例如

services:
    app.blog_select_builder:
        class: AppBundle\SearchEngine\BlogSelectBuilder
        tags:
            -
                name: gnugat_search_engine.select_builder
                resource_name: blog
                resource_definition: |
                    {
                        "fields": {
                            "id": "integer",
                            "title": "string",
                            "author_id": "integer"
                        },
                        "relations": ["author"]
                    }

我们最终可以使用它,例如在控制器中

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class BlogController extends Controller
{
    /**
     * Full URL example: /v1/blogs?title=IG&sort=author_id,-title&page=2&per_page=1
     *
     * @Route("/v1/blogs")
     * @Method({"GET"})
     */
    public function searchAction(Request $request)
    {
        $criteriaFactory = $this->container->get('gnugat_search_engine.criteria_factory');
        $searchEngine = $this->container->get('gnugat_search_engine.search_engine');

        $criteria = $criteriaFactory->fromQueryParameters('blog', $request->query->all());
        $results = $searchEngine->match($criteria);

        return new Response(json_encode($results), 200, array('Content-Type' => 'application/json'));
    }
}

提示:我们可以在其他服务中注入这些服务,而不是直接在控制器中使用这些服务。

安装

要安装 gnugat/search-engine-bundle,运行以下命令

composer require gnugat/search-engine-bundle:^0.3

然后注册 Gnugat\SearchEngineBundle\GnugatSearchEngineBundleAppKernel.php

进一步文档

您可以使用以下命令查看当前和过去的版本

您可以在以下链接中找到更多文档