suilven / freetextsearch
用于 SilverStripe 搜索的全文搜索基础包
Requires
- php: ~7.1
- league/climate: ^3.5
- silverstripe/cms: ^4
- symbiote/silverstripe-queuedjobs: ^4.5
Requires (Dev)
Suggests
- suilven/silverstripe-manticore-search: dev-master
- dev-master
- dev-main
- 2.0.0
- 1.11
- 1.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-dependabot/npm_and_yarn/blamer-1.0.4
- dev-PHP8
- dev-CI3
- dev-ADD_SIMILAR_SEARCH
- dev-SIMILARITY
- dev-STEMMING
- dev-ENHANCE_COVERAGE
- dev-documentation
- dev-FIX_PHPSTAN
- dev-FACETS
- dev-INTEGRATE2
- dev-INTEGRATE
- dev-CODING_STANDARDS
- dev-LINKS
- dev-UNIT_TESTING
- dev-INDEXING_MODE
- dev-BULK_REINDEX
- dev-MISSING_FIELDS
- dev-UNIT_TESTS
- dev-FIXTURES
- dev-UPGRADE_CI
- dev-FIXTURE_GENERATION
- dev-MORE_COVERAGE
This package is auto-updated.
Last update: 2024-09-21 19:12:15 UTC
README
此模块允许配置全文搜索索引,并提供创建索引和重新索引的工具。默认情况下,仅配置了 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
,添加。它执行以下两个任务之一
- 在数据对象被保存后立即索引
- /或标记数据对象为脏,并将作业添加到队列以处理受影响的索引。
--- 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
- 要搜索的索引,例如sitetree
或flickrphotos
PageSize
- 每页返回的搜索结果数量
以下与分面相关,尚未实现
ShowAllIfEmptyQuery
- 如果勾选,则对于空查询将显示搜索结果ShowTagCloudFor
- 当没有搜索结果显示时,显示分面字段的标签云
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
测试
$ vendor/bin/phpunit tests '' flush=1
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT。
安全性
如果您发现任何安全相关的问题,请通过电子邮件 gordon.b.anderson@gmail.com 联系,而不是使用问题跟踪器。
鸣谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。