>[danger] **弃用提醒:**
> *由于看云对于免费用户的限制愈发严苛,本文档已经迁移至语雀。本文档将不做维护。*
> **语雀地址**:[https://www.yuque.com/a632079/nodebb](https://www.yuque.com/a632079/nodebb)
*****
# NodeBB 搜索
默认 NodeBB 不带搜索引擎的,所以需要使用 搜索功能 的话需要用户自行开启。
需要注意的是,我们在本节中仅介绍本地搜索引擎(区别于公共搜索引擎:谷歌,百度)
## DBSearch
DBSearch 是 NodeBB 默认的搜索引擎(被依赖于`package.json`)。它支持 Mongodb,Redis,同时无需安装第三方程序(例如:Java,MySQL),是一个不错的搜索引擎软件。但是,它并不支持 **非拉丁字符**(例如:中文) 的搜索,所以目前我们**不推荐**使用该搜索插件。
>[danger]这里说下为啥 `dbsearch` 不支持中文:
>* 未集成中文分词
>* 数据库权重排列问题。(若支持中文搜索的话,基于Redis 的 NodeBB 是肯定不能用的,因为 Redis 缺乏这种排列的方法)
### 使用
启用 `nodebb-plugin-dbsearch` 并根据自己的需要配置即可。
## Solr(推荐)
Solr 是一个比较优秀的开源搜索引擎,目前有很多企业使用它作为搜索服务。它基于 Lucene ,但对于此有过很多优化。有趣的是,和 Lucene 一样,它隶属于 Apache 基金会。
### 安装
#### 在操作系统中
>[info] 本只是 Solr 的简单使用,如您需要更高深的使用方法,请参考官方教程: http://lucene.apache.org/solr/quickstart.html 并妥善使用 **搜索引擎** (例如:谷歌)
* 要求: Docker (该依赖需要您自行安装, 以下仅提供两个热门发行版的安装方法)
#### 安装 Docker
##### Ubuntu
* 要求: Ubuntu 16.04/18.04
```
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt update && sudo apt install docker-ce
```
##### CentOS
* 要求:
* OS: CentOS 7
* 仓库: 已启用 centos-extras
```
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce
```
#### 在 系统终端 中
> 由于在国内 DockerHub 速度慢,我们可以使用 Daocloud 的镜像来提高访问速度
```
$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sudo sh -s http://f1361db2.m.daocloud.io # 使用 Daocloud 的自动配置脚本
$ sudo docker run --restart always --name solr -d -p 8983:8983 -t solr # 拉取一个 solr 镜像并创建一个名为 solr 的容器
$ sudo docker exec -it --user=solr solr bin/solr create_core -c nodebb # 连接 solr 的终端, 创建名为 nodebb 的核心
```
#### 在 NodeBB 中
![](https://box.kancloud.cn/7c22ba92a43a5bef3499945b9b4d3125_1106x710.png)
1. 安装 `nodebb-plugin-solr`
2. 启用它, 部署并重启 NodeBB
3. 在 Apache Solr 插件配置中, 修改核心为 nodebb
4. 重启 NodeBB
5. 在 Solr 插件配置中 开启自动引索并点击重构引索(Rebuild indexes)
-------------
上面的是最简单的 Solr 使用方法,需要扩展/安全啊什么的,请善用搜索引擎。
## ElasticSearch
ElasticSearch 也是一个十分优秀的开源搜索引擎,同时也是目前主流的企业级引擎(例如:百度云,看云,阿里云提供 ElasticSearch 搜索集群)。它基于 Apache Lucene,起初是个人开发者开发的项目,目前由整个开源社区共同维护。
>[danger] ElasticSearch 虽然确实十分优秀,但十分消耗资源,在 2G 2C 的服务器上 CPU 内存占用居高不下 :(
### 安装
* 要求 : Java 8
#### 在操作系统中
>[info] 本部分只支持在 Ubuntu/Debian 使用,如您是其他操作系统,请参考官方教程:https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html#install-elasticsearch
1. 添加 Elastic 公钥
```
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
```
2. 安装 OpenJDK Java Runtime Environment(JRE)
```
$ sudo apt-get install openjdk-8-jre
```
3. 安装 ElasticSearch
```
$ sudo apt-get install elasticsearch
```
4. 开机自启并启动服务
```
$ sudo systemctl enable elasticsearch.service
$ sudo service elasticsearch start
```
5. 通过任何插件将 Mongodb 数据导入 ElasticSearch中
>这里,我们推荐使用 [mongo-connecter](https://github.com/mongodb-labs/mongo-connector)
#### 在 NodeBB 中
1. 安装 `nodebb-plugin-elasticsearch`
2. 激活插件 并 重启 NodeBB
3. 进入插件设置页面,检查与 ElasticSearch 的通信是否正常。如果没有,请根据需要调整。
## 公共搜索引擎
>[warning] 使用 公共搜索引擎 的前提是:您的站点已经被它收录 并且 您的站点的收录量/收录速度比较可观,否则就算安装了,也是然并卵系列。
这类插件就比较多啦,你只需要在 寻找插件 中 搜索 对应的搜索引擎名字(如:baidu,google,bing)并安装激活,就能正常使用了。
>[info] 编写: a632079
维护: PA Team
审核: PA Team
最后更新: 2018.12.02
- 序
- 赞助
- 导言
- 安装
- 通过操作系统
- Windows + Mongodb/Redis
- Ubuntu/Debian + Redis/Mongodb
- CentOS + Redis
- CentOS + Mongodb
- FreeBSD/OpenBSD + Redis
- Arch Linux + Redis
- OSX + Redis
- 通过云服务
- 通过主机面板安装
- AppNode
- CPanel
- 宝塔
- 使用
- FAQ
- 高级
- 运行 NodeBB
- 配置 Config.json
- 配置 Nginx
- 配置 MongoDB
- 更新 NodeBB
- 设置 Widgets
- 安装 Yarn
- 更新 MongoDB
- 数据库备份与恢复
- 重置管理员密码
- 让 NodeBB 支持搜索
- 优化
- 优化配置,提升NodeBB处理能力
- Google字体库 -> 360公共前端库
- Google字体库 -> 中科大镜像
- 海外VPS提升NodeBB访问速度
- 通过 NodeBB API 自动发帖
- 开发
- 准备
- 常用方法 & 变量
- 插件制作
- 使用工具包编写一个插件
- 主题制作
- 使用工具包编写一个主题
- 部件制作
- 国际化
- 钩子(hook)使用说明