之前Sphinx doc一直不支持web的中文搜索,一个牛逼的项目怎么能不支持中文搜索呢。看到现在这个项目的一个负责人是日本人,目前支持CJK的的搜索就是日本了,我觉得不应该呀,我大中华人杰辈出。果然在github上的pull request看到了台湾的enhao兄提交了繁体中文的搜索,看了代码的实现,里面是支持中文搜索的,于是在他的基础上修改了一些完善了简体中文的支持。

我一直觉得sphinx-doc这个项目很不错,可以写文档,写书,多多关注关注一下issue的列表。

上线发布

现在sphinx-doc的master或者v1.4版本后就支持中文(简体+繁体)搜索了。

sphinx-doc的中文搜索是依靠jieba这个开源的类库来实现的,这个类库就支持简体和繁体的切分,所以就很容易实现了。

使用

第一,你的系统需要安装jieba类库, pip install jieba

第二,接下来修改sphinx的conf.py文件,为项目设置为中文的搜索配置。

# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
#   'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
#   'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh'
html_search_language = 'zh'

第三,可选配置

# A dictionary with options for the search language support, empty by default.
# 'ja' uses this config value.
# 'zh' user can custom change `jieba` dictionary path.
# html_search_options = {'dict': '/usr/lib/jieba.txt'}   # 根据需要设置jieba的词典路径

第四,接下来重新编译生成文档。make html

sphinx的基本搜索原理

在编译的时候:

  1. 先对文本进行切词,把中文切分,
  2. 然后制作一个大的map对象,把关键字做为key,url做为value,保存到js文件。
  3. 搜索的时候寻找对应的关键字key,拿到url作为列表展示。

后续计划

上线比较匆忙,还有一些中文搜索的计划

  • 支持python3的搜索
  • 添加测试的用例