php, поиск на китайском и русском

В итоге делаю сайт на трех языках: английском, русском и китайском. Я надеюсь, что если я использую UTF-8 в приложении и базе данных, проблем с вводом-выводом не будет (будет ли?)

Но самое страшное — это поиски. Должно быть достаточно прохладно. Он должен быть полнотекстовым, индексироваться и т. д. Надеюсь, он будет понимать морфологию, использовать стемминг и т. д.

Сначала я просмотрел Zend_Search_Lucene, но, как я понял из http://framework.zend.com/issues/browse/ZF/component/10021 у него проблемы с китайским языком. :(

Теперь я думаю о Сфинксе. Он поддерживает как английскую, так и русскую основу. Я не уверен, насколько хорошо он работает с китайским языком, и я понятия не имею, насколько сложно мне будет добавить его поддержку. http://www.sphinxsearch.com/forum/view.html?id=1554 - это луч надежды, но, как неопытный пользователь Sphinx, я не думаю, что понимаю, что там сказано.


So,

есть ли у кого-нибудь опыт в таком «языково-независимом» поиске и может поделиться им со мной, пожалуйста?

и не могли бы вы дать мне что-нибудь, чтобы проверить поиск. Как носитель русского языка с некоторыми базовыми знаниями английского языка, я могу проверить поиск как на русском, так и на английском языке, но я даже не знаю, какие части этих китайских картинок являются словами. Пожалуйста, дайте мне несколько китайских строк, чтобы поместить их в индекс и несколько запросов с ожидаемыми результатами!


person Valentin Golev    schedule 29.10.2009    source источник


Ответы (4)


Идеографические символы в таких языках, как китайский или японский, требуют двух конечных позиций символов, поэтому у вас будут проблемы с UTF8, и вместо этого вам следует использовать UTF16.

Кроме того, любая поисковая система, поддерживающая UTF16, и ваши требования (например, стемминг) должны работать нормально — то есть, если вам нравится Sphinx, дерзайте!

person Seb    schedule 02.11.2009
comment
ой! Спасибо за комментарий! shpinx не поддерживает китайскую морфологию, не так ли? - person Valentin Golev; 02.11.2009
comment
Конечно, это так! Пока вы соответствуете своей кодировке во всем приложении, оно может справиться со всем. Посмотрите здесь: sphinxsearch.com/faq.html#encoding - person Seb; 02.11.2009
comment
Я пытался использовать некоторые тексты из zh.wikipedia.org/zh-tw/Wikipedia:%E9%A6%96%E9%A1%B5 в моем приложении, как и английские. Тексты сохранены и отображаются корректно. Может быть, я понял ваши слова неправильно? - person Valentin Golev; 03.11.2009
comment
Вы все еще используете UTF8 или перешли на UTF16 все приложение? Если вы все еще используете UTF8, могут появиться несоответствия... - person Seb; 03.11.2009
comment
Нет, я еще не изменился. Но я собираюсь это сделать. Не могли бы вы сказать мне, есть ли какие-либо основные потенциальные проблемы при замене utf8 на utf16? Я в жизни не работал с utf16. Спасибо! - person Valentin Golev; 04.11.2009
comment
Что ж, это может быть так. Я бы посоветовал попробовать новый отдельный проект, прежде чем все конвертировать, чтобы вы приобрели опыт работы с UTF16. Вы не можете просто изменить кодировку и ожидать, что все будет работать нормально: если у вас есть строки в UTF8, вам придется преобразовать их в UTF16. Кроме того, вы захотите рассмотреть функции многобайтовых строк в PHP: php.net /manual/en/book.mbstring.php. Удачи! - person Seb; 04.11.2009

Из документов Xapian:

Xapian использует алгоритмы стемминга Snowball. В настоящее время они поддерживают датский, голландский, английский, финский, французский, немецкий, венгерский, итальянский, норвежский, португальский, румынский, русский, испанский, шведский и турецкий языки. Существуют также реализации английского стеммера Ловинса, оригинального английского стеммера Портера, голландского стеммера Kraaij-Pohlmann и разновидности немецкого стеммера, нормализующего умлауты.

или к некоторым языкам мира, например к китайскому, понятие стемминга неприменимо, но оно, безусловно, имеет смысл для многих языков индоевропейской группы.

http://xapian.org/docs/stemming.html

person bobflux    schedule 29.10.2009
comment
Это просто прямая копия из документа - китайская проблема заключается в том, как разделить текст в базе данных - без каких-либо действительно глупых вещей, таких как вставка пробела между символами. - person William Yeung; 21.04.2010

Разве Google User Search недостаточно для ваших нужд? Что именно вам в нем не нравится?

person Vladislav Rastrusny    schedule 02.11.2009
comment
Я не могу использовать его в этой ситуации :( - person Valentin Golev; 02.11.2009

Я поддерживаю проект с открытым исходным кодом, основанный на sphinx, чтобы обеспечить лучшую поддержку китайского языка. Вы можете взглянуть на http://code.google.com/p/sphinx-for-chinese/ . Я не очень хорошо разбираюсь в русском языке, но это не проблема, если русские слова разделены пробелами. Просто оставьте мне сообщение, если у вас есть какие-либо проблемы

person Mickey Shine    schedule 27.07.2011