关于algolia

algolia是一个云搜索服务提供商,用户可以配置或者上传自己的需要搜索的数据到algolia,然后在dashboard中提供了数据统计和搜索优化的功能。

文档搜索docsearch

docsearch用为文档网站配置文档搜索功能。
bootstrap,vue,react等框架的文档都使用docsearch来提供快速,层次分明的文档搜索体验。
docsearch提供爬虫来帮助用户自定义搜索数据,jssdk在前端配置接入。

接入方式

docsearch本身提供了类似于百度统计的接入方式,但是对于公司内网的用户,docsearch官方的爬虫无法访问到。 为此,提供了另外一种解决方案。用户通过官方提供的爬虫项目,然后部署在内网后爬取数据,并配置好algolia的index,数据将会自动上传到algolia管理后台。

安装爬虫docsearch-scraper

克隆官方的爬虫项目,然后安装,但是官方的镜像对于国内的用户不太友好,特别是docker编译的时候,会报nodejs未安装的错误。可在Dockerfile.base中增加如下配置。

RUN apt-get install nodejs-legacy
RUN apt-get install npm --force-yes -y
RUN npm set registry https://registry.npm.taobao.org

另外会出现python包缺失的情况,如果在执行过pip install --user -r requirements.txt依然出现有包丢失的情况,需要通过pip手动安装缺失的包。

爬虫配置

config.json为默认的配置文件

{
  "index_name": "test_index",
  "start_urls": [
    "http://xxxx.xxx.com/books/wand/*"
  ],
  "stop_urls": [],
  "selectors": {
    "lvl0": ".book-element--article h2",
    "lvl1": ".book-element--article h3",
    "lvl2": ".book-element--article h4",
    "lvl3": ".book-element--article table tr td:first-child",
    "lvl4": ".book-element--article p",
    "text": ".book-element--article code, .book-element--article table td"
  }
}

index为索引名,需要事先在algolia控制台创建,并在爬虫的.env文件中配置APPLICATION_ID和API_KEY。

start_urls指定开始页面
selectors用来选择被抓取的内容,支持css选择器。 lvl*是指定内容层级

如图所示,匹配到文本的同时,也会寻找其层级关系