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

2024-06-01 07:52:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

请下载并在您的计算机上解压,cd到/rest/build/html,打开索引.rst用你的chrome。在

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

1.无法搜索汉字
2.不能搜索短单词

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

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

我怎样才能解决这个问题?在


Tags: install文本rest附件getissphinx文章
1条回答
网友
1楼 · 发布于 2024-06-01 07:52:00

编辑:

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

试着搜索单词'。^_^在

Sphinx使用python scrpitsearch.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())

这就是为什么短词找不到。如果您只想让这些词出现在索引中,可以将它们从列表中删除。在

我们也可以找到这条线:

^{pr2}$

这是斯芬克斯用来拆分单词的正则表达式。现在我们可以理解为什么它不能索引中文单词了。在

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

斯芬克斯搜索引擎的答案:

我把它放在这里以防别人发现它有用。感谢mzjn指出这一点。

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

更具体地说,您应该在sphinx.conf中修改charset_tablengram_lenngram_chars使其工作。你可以通过谷歌搜索这些关键字来获得正确的配置。在

然而,斯芬克斯可能会产生一个巨大的索引,因为每个汉字都被视为一个词。所以,如果您真的想为中文文档建立索引,请尝试使用coreseek。在

相关问题 更多 >