like и русский

Frutik

1024-й
like и русский

будут ли слова:

руская
русская
руська
руска

для like/ilike похожими?
 

Frutik

1024-й
тоесть у меня запрос

select * from table where name ilike 'руская'

выводит только одно значение - руская... это правильно?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
правильно. если тебе нужен полнотекстовый поиск с морфологией --- contrib/tsearch.
 

Macs

Guest
не, морфология русского языка здесь не поможет, т.к. с ее точки зрения "руска" никакого отношения к "русская" не имеет.
для таких сравнений применяют т.н. функцию левенштейна, которая для 2х строк возвращает мин. кол-во символов которые нужно изменить/вставить/удалить в первой строке чтобы получить вторую
похоже что только для такого рода сравнения эти слова будут похожими. (LD<=2)
исходник ее можно вытащить из исходника пхп, ну и create function ... language c :)
see also php_man/function.levenshtein.html
 

goodwarlock

Guest
Функция левенштейна здесь тоже не сильно поможет. Для нее и резкий и руска - без разницы, причем пример можно и получше подобрать.
Здесь нужно что-то типа soundex, но что-то я не слышал о soundex для нелатинских языков. Правда, Кнут о нем что-то писал, но разрабатывать с нуля программу анализа произношения и тем более искать по ней :) Проще забить. Даже гугл не собирается pastgresql исправлять.
 

Macs

Guest
извиняюсь Кнута не читал, но говорят (php_man/function.soundex.html) что
soundex("Hilbert") == soundex("Heilbronn")
что на порядок хуже чем левенштейновское сравнение
(для данной ситуации, право не знаю для какого языка писался soundex)

Frutik, а я правильно понял что
руская, русская, руська, руска это не опечатки, а, соответственно, бел, рус, укр, блг?

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

Frutik

1024-й
имелся ввиду действительно типа аналог саундекса и именно возмоджность написания одного и тогоже как на разных языках так и с разной грамотностью :)
 
Сверху