编辑:
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_chars
以sphinx.conf
使其工作。您可以搜索这些关键字以获得正确的配置。
然而,Sphinx 可能会生成一个巨大的索引,因为每个汉字都被视为一个单词。因此,如果您真的想为中文文档建立索引,请尝试coreseek 。