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

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

请下载它并在您的计算机上解压,cd 进入/rest/build/html,用您的 chrome 打开 index.rst。

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

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

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

请看附件2,不能搜索标准 文本中的汉字。 在此处输入图像描述 请参阅附件3,不能搜索 is文本中的短词。 在此处输入图像描述

我该如何解决这个问题?

4

1 回答 1

6

编辑:

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

尝试搜索“标准表达方式”这个词,它可以工作。^_^

Sphinx 使用 python 脚本构建索引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

狮身人面像搜索引擎的答案:

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

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

更具体地说,您应该修改charset_table, ngram_len,ngram_charssphinx.conf使其工作。您可以搜索这些关键字以获得正确的配置。

然而,Sphinx 可能会生成一个巨大的索引,因为每个汉字都被视为一个单词。因此,如果您真的想为中文文档建立索引,请尝试coreseek 。

于 2013-05-27T05:19:39.970 回答