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

时间:2013-05-25 00:12:19

标签: python python-sphinx restructuredtext

apt-get install  python-sphinx    
apt-get install  sphinxsearch    
mkdir rest    
cd rest/    
sphinx-quickstart    

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

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

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

1.不能搜索中文字符
2.不能搜索短语

请参见附件1,这是我要搜索的目标文章
enter image description here 您可以在文本中看到is标准

请参阅附件2,无法搜索文本中的中文字符标准enter image description here 请参阅附件3,无法搜索文本中的短文isenter image description here

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

修改

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

尝试搜索“标准表达方式”这个词,它有效。 ^ _ ^

使用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())

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

我们也可以找到这一行:

word_re = re.compile(r'\w+(?u)')

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

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

回答Sphinx搜索引擎:

我把它放在这里以防其他人觉得有用。感谢mzjn指出它。

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

更具体地说,您应该修改charset_table中的ngram_lenngram_charssphinx.conf以使其有效。您可以谷歌这些关键字进行正确配置。

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