hudhaifas-forks/silverstripe-extensible-search

此模块允许用户自定义和开发者扩展搜索页面实例,包括分析和建议。

安装: 72

依赖者: 0

建议者: 0

安全: 0

星级: 0

关注者: 0

分支: 14

类型:silverstripe-vendormodule

dev-master / 4.1.x-dev 2024-02-23 01:55 UTC

This package is not auto-updated.

Last update: 2024-09-21 02:43:08 UTC


README

当前版本是 4.1.4

此模块允许用户自定义和开发者扩展搜索页面实例,包括分析和建议。

需求

  • SilverStripe 3.1 → 4.0

入门指南

概述

可扩展搜索页面

这是自动创建的,允许根据搜索引擎进行搜索配置(更多信息见下文)。

page

搜索引擎

可扩展搜索页面设计为默认使用全文搜索,同时提供对自定义搜索引擎实现(如 Elasticsearch)的支持。

全文搜索

SilverStripe\ORM\Search\FulltextSearchable:
  searchable_classes:
    - 'SilverStripe\CMS\Model\SiteTree'
SilverStripe\CMS\Model\SiteTree:
  create_table_options:
    MySQLDatabase: 'ENGINE=MyISAM'
  extensions:
    - "SilverStripe\\ORM\\Search\\FulltextSearchable('Title', 'MenuTitle', 'Content', 'MetaDescription')"

在选择使用的搜索引擎时,全文搜索有一些重要的限制。此配置也可应用于 File,然而,遗憾的是它不支持进一步自定义。

自定义搜索引擎

以下是一个示例配置,其中 ElasticSearch 扩展了抽象的 CustomSearchEngine

nglasl\extensible\ExtensibleSearchPage:
  custom_search_engines:
    nglasl\extensible\ElasticSearch: 'Elastic'

搜索表单

PageController:
  extensions:
    - 'nglasl\extensible\ExtensibleSearchExtension'

使用此功能,可以显示用户交互的搜索表单(来自您的模板)

$SearchForm

搜索分析

这些对于帮助确定网站上的热门内容或内容是否难以找到非常重要。它们默认启用,但可以使用以下方式禁用

nglasl\extensible\ExtensibleSearch:
  enable_analytics: false

analytics

在触发搜索时,将 ?analytics=false 追加到 URL 将绕过搜索分析。这对于调试非常出色。

存档

根据您的搜索流量,可能需要使用 /dev/tasks/ExtensibleSearchArchiveTask 对每个搜索页面的过去搜索分析进行存档。建议尽可能在计划中触发此操作。

archives

archive

搜索建议

这些与搜索分析(在这种情况下,它们会自动填充)一起最为有效,并且可以用于显示网站上的热门搜索或搜索表单自动完成选项。它们默认启用,但可以使用以下方式禁用

nglasl\extensible\ExtensibleSearchSuggestion:
  enable_suggestions: false

suggestions

要启用使用 approved 搜索建议的自动完成。

Requirements::javascript('nglasl/silverstripe-extensible-search: client/javascript/extensible-search-suggestions.js');

// OPTIONAL.

Requirements::css('jquery-ui.min.css');
Requirements::javascript('jquery-ui.min.js');

智能模板

可以为您的搜索结果定义特定于自定义搜索引擎的模板。以下只是两个示例

ElasticSearch_results.ssPage_results.ss

SS4 变更

  • 自定义搜索引擎实现已更改,不再使用扩展(见上方)。

维护者联系方式

Nathan Glasl, nathan@symbiote.com.au