silverstripers/elemental-search

元素模块的全文搜索

安装次数: 10,668

依赖关系: 1

建议者: 0

安全性: 0

星标: 6

关注者: 5

分支: 18

开放性问题: 10

类型:silverstripe-vendormodule

1.0.5 2019-12-05 07:53 UTC

This package is auto-updated.

Last update: 2024-09-05 01:25:49 UTC


README

简介

本模块将 dnadesign/silverstripe-elemental 集成到 SilverStripe的全文搜索 中,并提供扩展以创建您页面或任何需要与全文搜索一起工作的数据对象的搜索文档。对于不希望使用Solr等复杂搜索系统的系统,此模块非常有用。

要求

  • SilverStripe ^4.0
  • Elemental ^2.0

安装

使用Composer安装

composer require silverstripers/elemental-search dev-master

确保您运行 dev/build?flush=1 以构建您的数据库并清除缓存。

使用方法

启用全文搜索

模块安装后,将自动在SearchDocument数据对象上启用全文搜索。您不需要额外的配置。

创建搜索表单

使用以下代码创建搜索表单,并在模板中显示

use SilverStripe\CMS\Search\SearchForm;


class  MyController extends Controller {

   public function SearchForm() 
   {
      return SearchForm::create($this, 'SearchForm');
   }
   
   public function results($data, $form, $request)
    {
        $data = array(
            'Results' => $form->getResults(),
            'Query' => DBField::create_field('Text', $form->getSearchQuery()),
            'Title' => _t('SilverStripe\\CMS\\Search\\SearchForm.SearchResults', 'Search Results')
        );
        return $this->owner->customise($data)->renderWith(array('Page_results', 'Page'));
    }

}

包含要搜索的对象。

您想要包含在搜索中的任何数据对象都必须装饰有 SilverStripers\ElementalSearch\Extensions\SearchDocumentGenerator。完成后,此扩展将在数据对象创建、更新时创建搜索文档,在删除时删除搜索文档。对于版本化数据对象,只有在对象发布时才会创建搜索文档。

指定需要搜索的内容。

对于网页,您可以选择配置哪些DOM元素要包含在搜索中。例如:您不需要缓存整个页面并搜索网站中重复的某些信息,如导航。

SilverStripers\ElementalSearch\Model\SearchDocument:
    search_x_path:
        - main-content

在您想要包含在搜索中的内容位于elemental元素之外的情况下。

SilverStripers\ElementalSearch\Model\SearchDocument:
    only_use_x_path: true

上述设置将渲染页面并从 main-content DOM节点中提取内容,并创建文档。

工作原理

该模块添加了一个新的数据对象 SearchDocument。它在每个启用搜索的页面创建时创建,这就是它如何创建聚合搜索结果的方式。

该模块覆盖了MySQLDatabase和搜索结果查询。

问题报告

创建问题以报告任何错误,或提交合并请求。