2009-09-14 4 views
13

Я изучаю методы soundex, metaphone и другие методы поиска строк за последние несколько дней, и в моем понимании оба алгоритма хорошо работают при обработке неанглийских слов, транслитерированных на английский.Включение soundex/metaphone для неанглийских символов

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

Есть ли алгоритмы поиска, способные полностью обрабатывать эти алфавиты? Или мне лучше использовать сторонние библиотеки полнотекстового поиска, такие как Lucene? Следовательно, вопрос тогда становится «делает ли Люцены неанглийскими алфавитами?»

+1

Если ваш прецедент - это просто текстовый поиск на неанглоязычных языках, вам может не понадобиться soundex. Вам нужна Lucene с соответствующим анализатором, как сказал ire_and_curses. Если вы хотите обрабатывать разные варианты написания одного и того же слова, вам понадобится алгоритм фонетического соответствия. Можете ли вы рассказать больше о своем прецеденте? –

ответ

15

Я не специалист в этой области, но ваши требования кажутся мне довольно трудными. Soundex был специально разработан для английских звуков, а также для персонажей. Я не думаю, что это будет хорошо работать для неанглийских языков. См. Например ответы на this related question.

Double-Metaphone является попыткой справиться с гораздо более сложными вариантами, чем Soundex или Metaphone, и был разработан для обработки неоднородностей на разных языках. Этого может быть достаточно для ваших нужд. На связанной странице есть список реализаций библиотек.

Поддержка других языков в Lucene основана на концепции Analyzers. Lucene поставляется с набором анализаторов для разных языков (хотя я не смог найти список по умолчанию), но качество может быть quite variable.

+0

Похоже, что анализаторы Lucene + - это то, что я действительно ищу, спасибо. :) –

+0

как насчет китайского, японского, арабского и индийского языков? – Sharique

0

В Википедии есть несколько хороших ссылок, начиная с статьи Soundex. Я не знаю, существуют ли существующие библиотеки, предназначенные для работы с такими разнообразными языками.

+0

Референции там все указывают на алгоритмы, которые обрабатывают англоязычные варианты написания европейских имен. Я не видел никого, кто действительно обрабатывает специальные символы как есть, если я не понимаю их ошибочно. –

+1

Я подумал, что, возможно, некоторые из вариантов Soundex были разработаны для лучшей работы с другими языками, но они скорее сосредоточены на английских или англоязычных написаниях. Нетрудно написать что-то LIKE Soundex для каждого из этих языков, но вам, вероятно, понадобится помощь лингвиста, если вы не носитель языка. –