问题:
sphinx-doc 默认不支持简体中文的自动检索,生成的html文档检索单个中文词时会显示无匹配结果,搜索整句时才会有匹配。
解决:
通过添加中文搜索支持插件来实现。
大致步骤:
- 安装结巴中文分词
pip install jieba
详细的安装方法参考这里。
- 安装sphinx.search.zh_CN 插件:
复制 zh_CN.py 到 sphinx 的 search 目录下,如: C:\Python27\Lib\site-packages\sphinx\search
打开 search 目录下的 init.py 找到:
from sphinx.search import en, ja
languages = {
'en': en.SearchEnglish,
'ja': ja.SearchJapanese,
}
修改成:
from sphinx.search import en, ja, zh_CN
languages = {
'en': en.SearchEnglish,
'ja': ja.SearchJapanese,
'zh_CN': zh_CN.SearchChinese
}
- 在 sphinx 工程的 conf.py 中添加
language = 'zh_CN'
,或者:html_search_language = `zh_CN`
然后就可以 make html 了。
解决过程遇到的问题:
-
python2
按照上述顺序安装后,依然不能检索中文,考虑应该是插件没有起作用,进入安装目录:../site-pakeages/sphinx/search/后发现,zh_CN.py 没有生成对应的pyc文件,确实没起作用,随后运行ipython,查看import语句是否生效,也就是上面修改的:
from sphinx.search import en, ja, zh_CN
提示不能导入 name zh_CN。
不解,随后将sphinx卸载重新安装:
pip uninstall sphinx
pip install sphinx
pin install --upgrade sphinx
然后再次运行import,竟没有再报错,正常导入了!
最后在sphinx工程的文件夹运行:
make clean
make html
在生成语句中多了以下几句:
Building Trie..., from ***/anaconda/lib/python2.7/site-packages/jieba/dict.txt
loading model from cache /tmp/jieba.cache
loading model cost 0.798622131348 seconds.
Trie has been built succesfully.
用firefox打开生成的网页,可以检索中文了!
- python3
另一台电脑装了python3的版本,在经历过以上各种折腾后依然不能正常使用。发现问题出在jieba这个包上面,当使用:
pip install jieba
总会有一些error出现,考虑可能是这个包不兼容python3,尝试到PyPI站点查找这个jieba包的信息,发现它的jieba_github站点,并在介绍里发现它有一个专门的python3版本jieba3k,安装方法在github里面也有介绍,简单可以:
pip install jieba3k
最终,python3 版本也搞定了!
网友评论
Building prefix dict from the default dictionary ...
Loading model from cache c:\users\administrator\appdata\local\temp\jieba.cache
Loading model cost 0.487 seconds.
Prefix dict has been built succesfully.
还有一句编译提示,不知道是不是没有索引到
dumping search index in None (code: zh_CN) ... done
找到这部分:
```
languages = {
...
'en' : SearchEnglish,
...
}
```
并修改为:
```
languages = {
...
'en' : SearchEnglish,
'zh_CN': 'sphinx.search.zh_CN.SearchChinese',
...
}
```