suilven/freetextsearch

用于 SilverStripe 搜索的全文搜索基础包

安装量: 1,518

依赖项: 1

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

开放问题: 10

类型:silverstripe-vendormodule


README

Build Scrutinizer Code Quality codecov.io

Latest Stable Version Latest Unstable Version Total Downloads License Monthly Downloads Daily Downloads composer.lock

GitHub Code Size GitHub Repo Size GitHub Last Commit GitHub Activity GitHub Issues

此模块允许配置全文搜索索引,并提供创建索引和重新索引的工具。默认情况下,仅配置了 sitetree 索引,但可以添加 SiteTree 子类(例如 BlogPost)或仅 DataObject 索引的索引,例如 flickr 照片。还可以覆盖用于渲染搜索结果的模板。

请注意,还必须安装一个实现,目前只有 Manticore Search(以前称为 Sphinx)的实现,包名为 suilven/silverstripe-manticore-search

配置

索引

默认情况下,索引 SiteTree 的核心字段。您可以通过以下方式覆盖以允许第三方模块或您的自定义模块。每个索引应映射到一个模型类,字段名称与数据库中的名称匹配。

以下是一个示例,代码可以在 https://github.com/gordonbanderson/flickr-editor/tree/upgradess4 中找到

---
Name: flickrfreetextsearch
After: freetextindexes
---

Suilven\FreeTextSearch\Indexes:
  indexes:

以上是必需的。额外的索引从这里开始。

    - index:

索引的名称

        name: flickrphotos

被索引的数据对象类

        class: Suilven\Flickr\Model\Flickr\FlickrPhoto

以下字段作为自由文本索引。

        fields:
          - Title
          - Description

不一定总是希望显示所有字段的突出显示,这是一个字段列表,用于在搜索结果中渲染突出显示。

        highlighted_fields:
          - Title
          - Description

以下字段存储但不可搜索。它们的功能是为渲染搜索结果提供字段,并避免从数据库中加载数据对象。请注意,Link 是一个混合字段,在索引时检查是否存在 Link() 方法,如果存在,则添加字段。

        stored_fields:
          - ThumbnailURL
          - Link

以下索引与 Manticoresearch 正确匹配,但请注意,ManticoreSearch PHP 客户端目前不允许进行分面搜索。它正在进行中。原始查询显示返回了分面组,但最好等待它在 PHP 客户端中实现。

可用于分面搜索的字段。

        tokens:
          - Aperture
          - ShutterSpeed
          - ISO
          - TakenAt

有一个字段实际上是另一个分面。

        has_one:
          - Suilven\Flickr\Model\Flickr\FlickrAuthor

以下示例展示了如何为分面索引一个“has many”字段,例如标签。每个条目有 3 个字段

  • name: 关系的名称
  • relationship: SilverStripe 关系的名称
  • field: FlickrTags 关系是 FlickrTag 的数据列表,存储的值是 RawValue 字段的值。
        has_many:
          -
            name: tags
            relationship: FlickrTags
            field: RawValue

扩展

在索引配置中引用的任何类都需要以下扩展,Suilven\FreeTextSearch\Extension\IndexingExtension,添加。它执行以下两个任务之一

  1. 在数据对象被保存后立即索引
  2. /或标记数据对象为脏,并将作业添加到队列以处理受影响的索引。
---
Name: freetextindexes-flickr
After: freetextindexes-extensions
---

Suilven\Flickr\Model\Flickr\FlickrPhoto:
  extensions:
    - Suilven\FreeTextSearch\Extension\IndexingExtension

索引模式

在网站配置中有一个额外的选项卡,称为全文搜索。它包含两个字段

  • FreeTextSearchIndexingModeInBulk - 选中此选项以通过队列批量索引,取消选中以在写入数据库后立即索引
  • BulkSize - 一次性索引的数据对象数量

安装

通过 Composer

$ composer require suilven/freetextsearch

使用方法

索引

请注意,这些命令需要 freetextsearch 的实现。

创建索引

根据需要更改索引的名称。请注意,当运行此命令时,索引的内容将被删除,需要重新索引。

vendor bin/sake dev/tasks/create-index index=sitetree

重新索引索引

根据需要更改索引名称。这将批量重新索引。

vendor bin/sake dev/tasks/reindex index=sitetree

为索引添加搜索页面

在CMS中添加一个类型为 搜索页面 的页面。以下字段可编辑

  • IndexToSearch - 要搜索的索引,例如 sitetreeflickrphotos
  • PageSize - 每页返回的搜索结果数量

以下与分面相关,尚未实现

  • ShowAllIfEmptyQuery - 如果勾选,则对于空查询将显示搜索结果
  • ShowTagCloudFor - 当没有搜索结果显示时,显示分面字段的标签云

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

测试

$ vendor/bin/phpunit tests '' flush=1

贡献

有关详细信息,请参阅 CONTRIBUTINGCODE_OF_CONDUCT

安全性

如果您发现任何安全相关的问题,请通过电子邮件 gordon.b.anderson@gmail.com 联系,而不是使用问题跟踪器。

鸣谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件