Pull to refresh

Comments 17

Ну, вы понимаете да, что при стандартной реализации на уровне базы это будет работать как перебор таблицы? А чтобы этого избежать, придется держать отдельное конвертированное поле?

(при этом в MS SQL есть SOUNDEX и полнотекстовый поиск, к которому можно делать плагины)
Я сначала использовал транслитерацию русских слов, а потом прогон через metaphone.
в моём случае нет чётких правил транслитерации.
да и метафон, на мой взгляд, заточен больше под их произношение чем под наш акцент…
)
У меня сделано через транслитерацию, шаманский словарь и Дамерау-Левенштейна (было написано на С, скомпилировано и подключено УДФкой к серваку БД)
Специфика конечно немного другая.
Soundex, metaphone, match… against итд — счастья не принесли, ибо опечаток — вагон, а искомые слова — русские, английские и латынь и прочие, не входящие в толковые словари.

ага. эти алгоритмы прекрасно работают на примерах из учебников, но «риаллайф» всё время задаёт немножечко другие задачи…
> А чтобы этого избежать, придется держать отдельное конвертированное поле?

да, конечно: поиск по конвертируемому полю, поле будет записываться триггером после инсёрта/апдэйта (сейчас всё конвертируется на клиентской части).
… и при изменении алгоритма вам придется переконвертить всю базу.

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

с французских на идиотские
факт.
буквально на ровном месте организовали своим согражданам за бугром множественный геморрой с разночтением имён в официальных документах.
государственные головы, чё.
Прочитал и понял, что сам как раз тоже придумал подобный алгоритм с пол года назад. Только еще учитывалось, например, что перед слогом или после может стоять гласная или согласная, либо слог может быть в начале/конце/середине слова. Забавно.
> Только еще учитывалось, например, что перед слогом или после может стоять гласная или согласная, либо слог может быть в начале/конце/середине слова.

интересно… можете подробнее?

Да там почти все так же. Просто словарь токенов чуть шире.
Терпеть не могу саморекламу, но вот тут я подробнее рассказывал про словарь и временно рабочий пример для тестов, чтобы поиграться: vas3k.ru/work/let_me_speak
Если нужно и сможете пережить мой говнокод, могу исходник дать.
а мне очень нравится чужая самореклама: порой в ней попадается столько интересного!
)
у вас, как я понял, задача стояла гораздо более сложная: научить комп «произношению» чужого (в данном случае — французского) языка вообще, отсюда забота об обрамлении слогов и их положении в слове, так?
с фамилиями подход всётаки более стрэйт форвард…

зато у вас наверняка здорово наметался взгляд на буквосочетания/звуки. взгляните на таблицу, как бы вы её изменили/дополнили?

а код лучше, наверно, на гуглькод выложить. совершенно неважно, что он плохо (на ваш взгляд) оптимизирован и/или написан: если кому понадобится — отладит под себя и поделится результатом, нормальный рабочий процесс, чё. всё проще, чем с нуля начинать.
Sign up to leave a comment.

Articles