gnugat / search-engine-bundle
该软件包已被废弃,不再维护。未建议替代软件包。
symfony中的gnugat/search-engine集成
v0.3.1
2015-12-01 10:28 UTC
Requires
- gnugat/search-engine: ^0.2
- symfony/config: ^2.3|^3.0
- symfony/dependency-injection: ^2.3|^3.0
- symfony/http-kernel: ^2.3|^3.0
- symfony/yaml: ^2.3|^3.0
Requires (Dev)
- phpunit/phpunit: ^4.6|^5.0
- symfony/finder: ^2.3|^3.0
- symfony/framework-bundle: ^2.3|^3.0
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
的实例
为了使其正常工作,您需要
- 创建
Fetcher
的实现(或安装现有的一个,如 PommSearchEngine) - 将其定义为名为
gnugat_search_engine.fetcher
的服务
此外,为了能够找到任何内容,SearchEngine
和 IdentifierEngine
都需要您添加有关可用资源的详细信息。这可以通过实现 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\GnugatSearchEngineBundle
在 AppKernel.php
进一步文档
您可以使用以下命令查看当前和过去的版本
- git tag 命令
- GitHub上的发布页面
- 列出版本之间更改的文件 (CHANGELOG.md)
您可以在以下链接中找到更多文档