jaedb / search
SilverStripe 搜索引擎
1.0.0
2018-08-28 03:35 UTC
Requires
This package is not auto-updated.
Last update: 2024-09-15 05:12:11 UTC
README
SilverStripe 内置的搜索表单是一个非常简单的搜索引擎。此插件将基于 SQL 的搜索提升到下一个层次,而无需实现像 Solr 或 Elastic Search 这样的完整搜索引擎。它旨在在简单的文本搜索功能之上增加数据导向的筛选器。
需求
- SilverStripe 4
用法
- 创建一个
SearchPage
实例(通常在网站根目录下)。此页面仅用于显示结果,请避免创建多个实例。 - 配置您的网站
_config/config.yml
以定义搜索参数。 - 运行
dev/build
以实例化新的配置
配置
types
: 要搜索的类型关联列表Label
: 前端字段标签Table
: 对象的主表(注意带_Live
后缀的版本化对象)ClassName
: 完整的 ClassNameClassNameShort
: 命名空间 ClassNameFilters
: 应用预搜索的筛选器列表(映射到DataList->Filter(key => value)
)Columns
: 用于查询字符串匹配的列(格式Table.Column
)
filters
: 筛选器选项关联列表Structure
: 定义筛选器的关系结构(必须是db
、has_one
或has_many
之一)Label
: 前端字段标签Table
: 关系主题的表Column
: 用于筛选的列Operator
: SQL 筛选运算符(例如>
、=
)JoinTables
: 关系映射的关联列表(使用types
数组的key
)Table
: 关系连接表Column
: 用于连接的列
sorts
: 排序选项的关联列表Label
: 前端字段标签Sort
: SQL 排序字符串
示例配置
---
Name: search
Before:
- '#site'
---
Jaedb\Search\SearchPageController:
types:
docs:
Label: 'Documents'
Table: 'File_Live'
ClassName: 'SilverStripe\Assets\File'
ClassNameShort: 'File'
Filters:
File_Live.ShowInSearch: '1'
Columns: ['File_Live.Title','File_Live.Description','File_Live.Name']
pages:
Label: 'Pages'
ClassName: 'Page'
ClassNameShort: 'Page'
Table: 'Page_Live'
Filters:
SiteTree_Live.ShowInSearch: '1'
JoinTables: ['SiteTree_Live']
Columns: ['SiteTree_Live.Title','SiteTree_Live.MenuTitle','SiteTree_Live.Content']
filters:
updated_before:
Structure: 'db'
Label: 'Updated before'
Column: 'LastEdited'
Operator: '<'
updated_after:
Structure: 'db'
Label: 'Updated after'
Column: 'LastEdited'
Operator: '>'
tags:
Structure: 'many_many'
Label: 'Tags'
ClassName: 'Tag'
Table: 'Tag'
JoinTables:
docs:
Table: 'File_Tags'
Column: 'FileID'
pages:
Table: 'Page_Tags'
Column: 'PageID'
sorts:
title_asc:
Label: 'Title (A-Z)'
Sort: 'Title ASC'
title_desc:
Label: 'Title (Z-A)'
Sort: 'Title DESC'
published_asc:
Label: 'Publish date (newest first)'
Sort: 'DatePublished DESC'
published_desc:
Label: 'Publish date (oldest first)'
Sort: 'DatePublished ASC'