你好!这是我第一次尝试使用 AI 编写扩展程序。
这个绝佳的创意源自 clarkwinkelmann/flarum-ext-scout。
希望大家能共同完善这个插件。
—
Flarum 2.0 中文搜索插件 (CN Search)
gitzaai/cnsearch 是一款专为 Flarum 2 设计的扩展,使用 Meilisearch 作为讨论搜索的后端。它会对讨论标题及可见的回复内容进行索引,并无缝集成到 Flarum 内置的讨论搜索流程中。
预览图
后台设置

搜索结果

—
功能特性
- 全文检索: 使用 Meilisearch 实现讨论内容的全文搜索。
- 文档管理: 每个讨论对应一个 Meilisearch 文档。
- 内容合并: 将可见的回复内容合并到对应的讨论文档中。
- CJK 支持: 为中文、日文、韩文及其他 CJK 字符添加 n-gram 字段支持。
- 触发优化: 降低论坛搜索触发的长度限制,支持 1-2 个汉字的简短查询。
- 管理工具: 提供管理 API 和控制台命令,用于状态检查、连接测试、搜索测试及重新索引。
- 自动同步: 当帖子或讨论被创建、编辑、隐藏、恢复或删除时,自动同步索引。
—
系统要求
Flarum 2.0(不兼容 Flarum 1.x )
PHP 8.2+
安装
composer require gitzaai/cnsearch
php flarum assets:publish
php flarum cache:clear
注意: 对于 Flarum 2.0 beta 8 及更高版本,请在安装或更新扩展后运行 php flarum assets:publish,以确保前端资源与当前的扩展代码保持一致。
—
配置
本扩展不提供预设的 Meilisearch 地址或 API 密钥。您可以在后台面板进行配置,或使用以下命令:
php flarum cnsearch:configure https://your-meilisearch.example --index=flarum_discussions
php flarum cache:clear
如果您的 Meilisearch 实例需要身份验证,请提供您的密钥:
php flarum cnsearch:configure https://your-meilisearch.example --key=你的密钥 --index=flarum_discussions
php flarum cache:clear
如果使用1panel,请在应用商店找到Meilisearch这个应用,点击参数就能找到密钥
您也可以直接在数据库中写入设置:
INSERT INTO settings (`key`, `value`) VALUES
('cnsearch.meili.host', 'https://your-meilisearch.example'),
('cnsearch.meili.index', 'flarum_discussions')
ON DUPLICATE KEY UPDATE `value` = VALUES(`value`);
如果您的 Flarum 数据库表带有前缀,请将 settings 替换为带前缀的表名。
—
验证
重建索引:
php flarum cnsearch:reindex
如果提示 There are no commands defined in the "cnsearch" namespace.,请先在后台启用 CN Search 插件,然后再次运行命令。
查看状态:
php flarum cnsearch:status
Documents 是已索引的 Meilisearch 文档数,通常应与可见讨论数一致。
Source posts 是包含在索引中的可见回复数,通常会多于文档数。
直接测试关键词:
php flarum cnsearch:search 中文关键词
更新扩展后的建议操作:
composer dump-autoload -o
php flarum cache:clear
php flarum cnsearch:reindex
—
API 接口
搜索:
curl "[https://your-flarum-site.example/api/cnsearch/search?q=keyword&page=1&perPage=20](https://your-flarum-site.example/api/cnsearch/search?q=keyword&page=1&perPage=20)"
状态检查与重索(需要管理员会话):
- 状态检查:
curl "[https://your-flarum-site.example/api/cnsearch/status](https://your-flarum-site.example/api/cnsearch/status)"
- 重新索引:
curl -X POST "[https://your-flarum-site.example/api/cnsearch/reindex](https://your-flarum-site.example/api/cnsearch/reindex)"
- 连接测试:
curl "[https://your-flarum-site.example/api/cnsearch/test-connection](https://your-flarum-site.example/api/cnsearch/test-connection)"
—
相关链接
—
搜索高亮配置
若要在搜索结果中突出显示关键词,请在 后台面板 > 外观 > 自定义样式 中添加以下 CSS 代码:
/* 搜索结果关键词高亮 */
.DiscussionListItem-main mark {
background: #C6FF00 !important;
border-radius: 0px;
}