Запрос похожих значений.

brutka

Создатель
Регистрация
16 Июл 2008
Сообщения
281
Реакции
14
Имею список городов, cities (id, name), в котором ряд городов дублируется, но не с полным соответствием, а с минимальными расхождениями.
Помогите, пожалуйста, составить запрос на получение дублированных названий, с расхождением в 1 или 2 буквы.
Например, из:
1 Москва
2 Масква
3 Питер
4 Моксква
5 Москоу

должен вернуть 1, 2, 4
 
SOUNDEX() ?
Кстати, не уверен, как эта функция будет работать с русскоязычным текстом.

Если нет, то расстояние Левенштайна - то что Вам нужно. Но в ничего не слышал о его наличии в Мускуле. Есть в ПХП. Но учтите, что перебирать прийдется очень долго, и если это не разовая операция - то не годится.
 
Аналогичную задачу (поиск неполных соответствий слов, в т.ч. русских) - когда-то решил с помощью установки Sphinx и построения соответствующих индексов. Поиск неточных совпадений с его помощью - 3 строчки кода + конечно до них некоторое время на въезжание/форумы по сфинксу, но на больших объемах - оправдывает потраченное на 100%. В мускуле же для этого есть FULLTEXT индекс и MATCH AGAINST - но по быстродействию они сильно проигрывают сфинксу.
 
начальные ключевые слова для дальнейших "раскопок" получил, спасибо.
база Postgresql, операция не частая, но не разовая... буду пробовать
 
Назад
Сверху