>[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 中

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)使用說明