xi/search-bundle

此包最新版本(dev-master)没有可用的许可信息。

Xi Search Bundle 为您提供前端逻辑以实现 elasticsearch

安装: 514

依赖: 1

建议者: 0

安全性: 0

星标: 3

关注者: 1

分支: 1

开放问题: 1

类型:symfony-bundle

dev-master 2012-09-04 11:31 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:18:02 UTC


README

XiSearchBundle 提供了一种简单的方法来展示您的搜索数据,即使您不确定期望的数据类型。

您可以使用 XiSearchBundle 与任何搜索引擎配合使用,因为 XiSearchBundle 提供了您最终搜索数据对象结构必须实现的接口。

安装

deps -file

[XiSearchBundle]
    git=http://github.com/xi-project/xi-bundle-search.git
    target=/bundles/Xi/Bundle/SearchBundle

autoload.php 文件

<?php
'Xi\\Bundle'       => __DIR__.'/../vendor/bundles',
?>

appKernel.php -file

<?php
            new Xi\Bundle\SearchBundle\XiSearchBundle(), 
?>

routing.yml -file

XiSearchBundle:
    resource: "@XiSearchBundle/Resources/config/routing.yml"
    prefix:   /

config.yml -file

xi_search:
    result_renderer_extensions:
        acmeType: acmeType_renderer_extension
    default_limit: 50

扩展 ajaxForm(来自 ajaxbundle)并确保您将自定义类绑定为您自己的 ajax 表单处理器(请参阅 ajaxbundle 文档)

class App.AjaxForm.YourCustomClass extends App.AjaxForm.Default

    xiSearchResultCallback: (content) ->
        @searchResult =  $(@element).siblings('.search-result')
        if !@searchResult.length
            $(@element).after('<div class="search-result"></div>')
            @searchResult =  $(@element).siblings('.search-result')

        @searchResult.html(content)

集成到 ElasticSearch

使用此包最简单的方法可能是与 ElasticSearch 配合使用,因为 XiSearchBundle 为此提供了预制的实现。然而,这需要 FOQElasticaBundle 来工作。

分页

分页使用 knp-pagination 包,默认开启

假设搜索是通过 Ajax 获取的,其中包含一个 jQuery 插件,该插件使用 JavaScript 将接收到的分页逻辑绑定到实际的搜索表单上。

由于分页通常使用搜索表单的默认字段,因此只需配置索引。页面、术语和提交按钮的值也可以被覆盖。

$('#search-result-container').xiSearchPaginate
        indices: ['#xi_searchbundle_searchtype_index_0', '#xi_searchbundle_searchtype_index_1', ...]

要使这些绑定生效,请配置 knp 分页以使用适当的分页模板。

knp_paginator:
    page_range: 9                      # default page range used in pagination control
    default_options:
        page_name: page                # page query parameter name
        sort_field_name: sort          # sort field query parameter name
        sort_direction_name: direction # sort direction query parameter name
        distinct: true                 # ensure distinct results, useful when ORM queries are using GROUP BY statements
    template:
        pagination: XiSearchBundle:Pagination:sliding.html.twig     # sliding pagination controls template
        sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig # sort link template