如何在Sphinx生成的文档中搜索中文字符和短文?

it_*_*ure 5 python restructuredtext python-sphinx

apt-get install  python-sphinx    
apt-get install  sphinxsearch    
mkdir rest    
cd rest/    
sphinx-quickstart    
Run Code Online (Sandbox Code Playgroud)

我在重组文本中创建了我的第一篇文章.
http://s.yunio.com/!LrAsu

请下载并在您的计算机上解压缩/rest/build/html,然后使用您的chrome打开index.rst.

我发现在重组文本搜索功能:

1.不能搜索汉字
2.不能搜索短文

请看附件1,这是我要搜索的目标文章
在此输入图像描述 你可以看到 is,并??在文本中.

请看附件2,不能搜索文字中的汉字?? . 在此输入图像描述 请参阅附件3,无法搜索is文本中的短文 . 在此输入图像描述

我该如何解决这个问题?

Nar*_*uil 6

编辑:

Sphinx只为整个中文句子构建索引,因为它没有空格,Sphinx不知道在哪里拆分单词来构建索引.检查文件searchindex.js以查找生成的索引.

尝试搜索"标准表达方式"这个词,它有效.^ _ ^

Sphinx使用python scrpit构建索引search.py.我们可以找到它

stopwords = set("""
a  and  are  as  at
be  but  by
for
if  in  into  is  it
near  no  not
of  on  or
such
that  the  their  then  there  these  they  this  to
was  will  with
""".split())
Run Code Online (Sandbox Code Playgroud)

这就是为什么找不到短语的原因.如果您只希望它们出现在索引中,则可以从此列表中删除这些单词.

我们也可以找到这一行:

word_re = re.compile(r'\w+(?u)')
Run Code Online (Sandbox Code Playgroud)

这是Sphinx用于分割单词的正则表达式.现在我们可以看出为什么它不能索引中文单词.

解决方案是将中文单词拆分支持添加到此文件中.有人已经这样做了:http://hyry.dip.jp/tech/blog/index.html?id = 374

回答Sphinx搜索引擎:

我把它留在这里以防其他人发现它有用.感谢mzjn指出来.

Sphinx默认不支持中文,因为它无法识别中文字符集.它不知道在哪里拆分单词来构建索引.您需要修改配置文件,让它为中文单词建立索引.

更具体地讲,您应该修改charset_table,ngram_len,ngram_charssphinx.conf使其发挥作用.您可以谷歌这些关键字进行正确配置.

但是,Sphinx可能会生成一个巨大的索引,因为每个中文字符都被视为一个单词.因此,如果您真的想为中文文档构建索引,请尝试使用coreseek.