Как искать китайские иероглифы и короткие слова в документации, созданной Sphinx?


person showkey    schedule 25.05.2013    source источник
comment
Что касается is, я думаю, это потому, что это стоп-слово. en.wikipedia.org/wiki/Stop_words   -  person Naruil    schedule 27.05.2013
comment
Вы используете разные кодировки? Может быть, это проблема. Браузер использует utf8, я думаю. Какова кодировка файла, который вы хотите найти?   -  person User    schedule 27.05.2013


Ответы (1)


Изменить:

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

Ответ для поисковой системы Sphinx:

Я оставлю это здесь на случай, если кому-то это может пригодиться. Спасибо, что mzjn указал на это.

Sphinx по умолчанию не поддерживает китайский язык, поскольку он не может распознавать китайскую кодировку. Он не знает, где разбивать слова для построения индексов. Вам нужно изменить файл конфигурации, чтобы он мог индексировать китайские слова.

В частности, вы должны изменить charset_table, ngram_len, ngram_chars в sphinx.conf, чтобы заставить его работать. Вы можете погуглить эти ключевые слова для правильной настройки.

Однако Sphinx может генерировать огромный индекс, поскольку каждый китайский символ рассматривается как слово. Так что попробуйте coreseek, если вы действительно хотите создать указатель для китайских документов.

person Naruil    schedule 27.05.2013
comment
Вопрос касается генератора документации Sphinx, не поисковой системы Sphinx. - person mzjn; 27.05.2013
comment
почему в моем сфинксе нет search.py? - person showkey; 03.06.2013
comment
На моей машине с Debian этот файл находится по адресу /usr/share/pyshared/sphinx/search.py. - person Naruil; 03.06.2013