編集:
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())
それが短い言葉が見つからない理由です。インデックスに表示したいだけの場合は、これらの単語をこのリストから削除できます。
次の行も見つかります。
word_re = re.compile(r'\w+(?u)')
これは、Sphinx が単語を分割するために使用する正規表現です。これで、中国語の単語を索引付けできない理由がわかりました。
解決策は、中国語の分割サポートをこのファイルに追加することです。誰かがすでにそれをやっている: http://hyry.dip.jp/tech/blog/index.html?id=374
Sphinx 検索エンジンの回答:
他の人が役に立つかもしれない場合に備えて、ここに残します。mzjnさん、ご指摘ありがとうございます。
Sphinx は中国語の文字セットを認識できないため、デフォルトでは中国語をサポートしていません。単語を分割してインデックスを作成する場所がわかりません。中国語の単語のインデックス作成を行うには、構成ファイルを変更する必要があります。
具体的にはcharset_table
、 、ngram_len
、ngram_chars
insphinx.conf
を変更して機能させる必要があります。適切な構成については、これらのキーワードをググることができます。
ただし、すべての漢字が単語として扱われるため、Sphinx は巨大なインデックスを生成する可能性があります。したがって、中国語のドキュメントのインデックスを本当に作成したい場合は、代わりにcoreseekを試してください。