SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.06.2012 22:59:12

boiler256
Участник
Зарегистрирован: 20.06.2012
Сообщений: 5

Нахождение похожих строк

Привет!

Подскажите пожалуйста, а то самому сделать не получается(

В базе хранятся строки

1.  U MOD OD D M V V V V V V M D O MOD U U O O V V V V V V V V V V O V X
2.  O MODFL R Im M V V V X V V V O V X OR O X V O V V V V V V V V V O R O R O V
3.  U MOD MOD V V V V V V V V O V V V U U V V V O V V V V V V V V MO O U
4.  X O MOD MOD X V V V V V V O X M V U V V O X V V V V V V V V OR O O X


как вывести строки которые больше всего похожи на строку под номером 1.  (U MOD OD D M V V V V V V M D O MOD U U O O V V V V V V V V V V O V X)

Неактивен

 

#2 20.06.2012 23:01:18

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Нахождение похожих строк

А чем определяется "похожесть"?
Вариант типа

select * from t where str like '%U MOD OD D M V V V V V V M D O MOD U U O O V V V V V V V V V V O V X%'
Вам не помогает?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 20.06.2012 23:26:42

boiler256
Участник
Зарегистрирован: 20.06.2012
Сообщений: 5

Re: Нахождение похожих строк

да, я так и пробовал, но оно выводит одну строку

а мне надо найти строки которые больше всего похожи на мою, и отсортировать их по похожести

запрашиваемая строка:
U MOD OD D M V V V V V V M D O MOD U U O O V V V V V V V V V V O V X


результат селекта
U MOD OD D M V V V V V V M D O MOD U U O O V V V V V V V V V R B M X
U MOD OD D M V V V V V V M D O MOD U U O O V V V V V V F F F F B M X

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

Неактивен

 

#4 20.06.2012 23:29:10

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Нахождение похожих строк

Боюсь, что Вам придётся либо смотреть в сторону регулярных выражений (http://dev.mysql.com/doc/refman/5.1/en/regexp.html) либо хранить строку по-другому.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 20.06.2012 23:45:09

boiler256
Участник
Зарегистрирован: 20.06.2012
Сообщений: 5

Re: Нахождение похожих строк

а как по другому? в базу я закладываю массивы типа array(1=>'V',2 =>'V', ... , n ) и хочу их потом сравнить  с помощь SQL запросов, разве регулярные выражения могут побуквенно сравнить?

Неактивен

 

#6 20.06.2012 23:47:47

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Нахождение похожих строк

По-другому - это хранить все части строки в отдельных маленьких строках ( отношение многие ко многим). В этом случае возможно и получится sql-ем решить задачу.

Формализуйте алгоритм поиска похожести, без этого трудно что-то еще посоветовать.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 20.06.2012 23:48:17

boiler256
Участник
Зарегистрирован: 20.06.2012
Сообщений: 5

Re: Нахождение похожих строк

думаю надо смотреть в сторону регулярных выражений

Неактивен

 

#8 20.06.2012 23:59:54

boiler256
Участник
Зарегистрирован: 20.06.2012
Сообщений: 5

Re: Нахождение похожих строк

как такой запрос по производительности?,  если у меня будет 24 поля в таблице и каждое поле проверять с LIKE,

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson