liip/search-bundle

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

此包为在 Symfony2 应用中创建搜索 UI 提供了一些基本基础设施,并集成了 Google 搜索 API。

安装次数: 78,849

依赖者: 2

建议者: 0

安全: 0

星标: 36

关注者: 41

分支: 11

公开问题: 5

类型:symfony-bundle

2.0.0 2016-05-09 06:43 UTC

README

Latest Stable Version Latest Unstable Version Total Downloads

此包提供了一致接口,用于与各种搜索引擎进行全文搜索,并包含一个带有 twig 模板的控制器,用于渲染搜索表单和结果。

注意:您正在查看此包的第 2 版,与第 1 版相比有重大变化。

简介

此搜索包简化了将搜索功能添加到您网站的过程。

为您的提供包括

  • 用于渲染带有 twig 模板的搜索框和搜索页面的控制器
  • 用于查询 Google 站点搜索的服务
  • 提供搜索结果分页的服务

内置搜索引擎支持

目前,默认支持 Google 站点搜索。有一个实现使用 Google REST API,另一个实现使用 自定义搜索元素功能,仅在前端使用 JavaScript 加载搜索。

欢迎为其他服务做出贡献。

安装

使用 composer require liip/search-bundle 安装此包。

在 app/Kernel.php 中包含此包。

在 app/config/config.yml 中添加您首选的搜索引擎

liip_search:
    clients:
        google_rest:
            api_key: '%google.api_key%'
            search_key: '%google.search_key%'

或如果您使用 JavaScript Google 自定义搜索引擎

liip_search:
    clients:
        google_cse:
            cse_id: '%google.search_key%'

使用

您可以使用 liip_search_box twig 函数在页面的任何位置显示搜索框

{{ liip_search_box(query, 'query-field-id', 'css-class') }}

您可以使用以下参数自定义搜索框

  • query - 默认显示的查询
  • fieldId - 要用于搜索输入字段的 HTML id。当页面上有多个搜索框时,请使用不同的 id,例如在页眉和内容中。
  • cssClass - 应用到整个搜索框 <form> 的 CSS 类。

为搜索操作创建一个路由。最简单的方法是使用主项目路由.xml 中提供的提供路由.xml

    liip_search:
        resource: "@LiipSearchBundle/Resources/config/routing.xml"

默认为 URL /search。如果您想使用不同的路由,请在包含路由时使用 prefix 选项,或使用 %liip_search.controller.search_action% 作为 _controller 的默认值来配置您自己的路由。

自定义模板

此包提供的搜索结果模板扩展了 LiipSearchBundle::layout.html.twig 模板。为了与其他网站集成,您有两个选择

  • 创建 app/Resources/LiipSearchBundle/views/layout.html.twig 并使其继承您的基模板,在您想要放置搜索结果的位置添加一个 liip_search_content 块。
  • 创建 app/Resources/LiipSearchBundle/views/Search/search.html.twig 并构建自己的模板结构 - 您应该能够使用 usesearch_results.twig.html 模板来获取 liip_search_content 块。

当然,您也可以覆盖任何模板以自定义它们的功能。请参阅http://symfony.com/doc/master/book/templating.html#overriding-bundle-templates

配置参考

这是在liip_search键下可以配置的完整参考。

search_factory

字符串,默认值:null

指定一个实现Liip\SearchBundle\SearchFactoryInterface的自定义服务。此服务将由控制器用于创建Pagerfanta实例以处理搜索。

如果您配置了搜索引擎服务之一,则不需要设置此字段。

search_route

字符串,默认值:liip_search

将处理提交的搜索请求的路由名称。

restrict_language

布尔值,默认值:false

如果要将此值更改为true,则请求搜索服务将结果限制为请求的语言。

Google Search REST API集成

配置这些选项之一将启用Google搜索引擎服务。它们位于clients.google_rest下。

api_key

字符串,必需

您的Google API密钥

search_key

字符串|数组,必需

标识您的Google搜索引擎的键。可能是一个键列表,根据区域设置索引以使用每个区域设置的不同的引擎。如果您通过单独的搜索引擎控制区域设置,则无需将restrict_language设置为true,除非您想使自定义搜索引擎接收额外的语言限制。

api_url

字符串,默认值:https://www.googleapis.com/customsearch/v1

REST调用的Google搜索API URL

restrict_to_site

字符串,默认值:null

如果留空,将搜索配置为Google搜索引擎的所有网站。设置域名以限制到该域名。

Google Custom Search Engine集成

配置此部分将激活不同的控制器,用于渲染启用CSE搜索的JavaScript片段。此配置位于clients.google_cse下。

cse_id

字符串|数组,必需

标识您的Google Custom Search Engine的键。可能是一个键列表,根据区域设置索引以使用每个区域设置的不同的引擎。CSE不支持restrict_language,因此按语言使用不同的搜索引擎是您限制搜索结果语言的唯一选项。

故障排除

Google Custom Search Engine

如果您收到表示“从Google搜索引擎API收到空响应”的SearchException,请尝试将输出的URL复制到浏览器中。您应该得到JSON响应,但可能它将具有错误状态。

如果您收到一个状态500且消息为空的错误,那么您可能需要在Google管理面板中更新搜索引擎。

添加您自己的搜索服务

实现Liip\SearchBundle\SearchInterface并将其配置为服务。然后设置liip_search.search_client为此服务名称。

待办事项

  • 使用guzzle与Google REST API通信
  • 添加对精炼(类似“更多类似”)的支持,并在搜索结果数组中包含可传递给SearchInterface::refineSearch的信息
  • 公开更多谷歌搜索参数