algolia 全文检索

3,960 阅读2分钟

内置搜索只能从标题 h2 和 h3 标题构建索引,你可以使用 Algolia 搜索。不同于开箱即用的内置搜索,Algolia 搜索 需要你在使用之前将你的网站提交给它们用于创建索引。

官网填写申请邮件

image.png

邮件返回内容大致就是说个人博客站点人家不在主动收录。但是可以自己进行爬网。爬取索引数据。

环境准备

使用虚拟机 linux 进行运行爬网程序,毕竟 docker 这些在 win 下很多问题,操作不方便。algolia 帐号创建索引,这里我创建一个名为 app 的索引。创建一个 API key 必须有以下权限。

API_KEY set to your API Key. Make sure to use an API key with write access to your index. The ACL addObjecteditSettings and deleteIndex must be allowed to this key.

algolia 帐号 注册地址

image.png

(这里要注意,先注册一个,然后跑命令,然后再关联前面的keys)

自己运行官方文档

安装docker

我们必须运行起来

yum -y install docker
service docker start
docker -v

设置 docker 的 algolia 环境变量,设置的方式有两种,可以任意选择一种。

  1. 使用docker run --env <key>=<value> <IMAGE-ID>来修改环境变量

  2. 创建环 docker 环境变量文件 .env,目录任意,运行时指定环境变量文件 --env-file=.env

    APPLICATION_ID=YOUR_APP_ID
    API_KEY=YOUR_API_KEY
    

    image.png APPLICATION_ID image.png API_KEY image.png image.png 我们填写 appId 已经创建并有 ACL 权限的 API-key。做好准备。

#config.json

对于我们收到的每个DocSearch请求,我们创建了一个自定义JSON 配置文件,用于定义爬网程序的行为方式。您可以在此存储库中找到所有配置 。配置文档

自己打开自己的站点查看开发者模式,检测页面的元素标签。参考官方文档配置进行填写。

下面是我自己页面的例子

{
  "index_name": "app", // 这里要对应上,前面的index_name
  "start_urls": [
    "http://www.example.com/docs/"
  ],
  "stop_urls": [],
  "selectors": {
    "lvl0": {
      "selector": "sidebar-links sidebar-group-items",
      "global": true,
      "default_value": "Documentation"
    },
    "lvl1": "h1",
    "lvl2": "h2",
    "lvl3": "h3",
    "lvl4": "h4",
    "lvl5": "h5",
    "text": "p, li, code"
  
  },
  "strip_chars": " .,;:#",
  "custom_settings": {
     "attributesForFaceting" : ["language", "version"]
  },
  "conversation_id": [
    "809666386"
  ],
  "scrap_start_urls": false,
  "nb_hits": "OUTPUT OF THE CRAWL"
}

#运行 algolia/docsearch-scraper 镜像

对应指定 .envconfig.json 的绝对路径,首次运行要加载镜像灰常慢。docker 命令我去掉了 jq 部分,那个应该是格式化 json的,没有也可以。

docker run -it --env-file=.env -e "CONFIG=$(cat ~/config.json)" algolia/docsearch-scraper

运行会有很多 record,如果都是 0,请检查 config.json 是否正确。algolia 社区

运行后回到 algolia 帐号查看 app 索引。可以发现有很多索引在里面。

image.png

全文检索