Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сравнение словоформ  [new]
Newber
Member

Откуда: Planet Earth
Сообщений: 107
Можно ли средствами SQL сравнить переменные
declare @text1 nvarchar(50)
declare @text2 nvarchar(50)
declare @text3 nvarchar(50)
Set @text1 ='Window'
Set @text2 ='Windows'
Set @text3 ='Windowed'
"полнотекстовым" сравнением?
то есть получить идентичность?
только без like, так как нужны именно словоформы.
если есть такой способ его можно обернуть в функцию, но только есть ли он?
10 май 11, 17:04    [10630764]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
в свое время тоже была проблема
Нечеткое сравнение
пока мест лучше не нашел, хотя еще до выхода SQL 2008 R2 говорили что такие в SQL 2008 R2 встроенные функции есть
10 май 11, 17:22    [10630892]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Eduard Minasyan
Member

Откуда:
Сообщений: 119
используйте DIFFERENCE или SOUNDEX
10 май 11, 17:53    [10631113]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Eduard Minasyan
используйте DIFFERENCE или SOUNDEX
Это слишком приближенно.
Тут нужна ли сторонняя библиотека или писать свой ласапед.
10 май 11, 18:01    [10631146]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
посомтрите на эту

sys.dm_fts_parser

http://msdn.microsoft.com/en-us/library/cc280463.aspx
10 май 11, 18:10    [10631196]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Eduard Minasyan
Member

Откуда:
Сообщений: 119
Mnior
Eduard Minasyan
используйте DIFFERENCE или SOUNDEX
Это слишком приближенно.
Тут нужна ли сторонняя библиотека или писать свой ласапед.


у меня SQL server 2003 sp3 работает без библиотеки
11 май 11, 13:26    [10634785]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Eduard Minasyan
Mnior
пропущено...
Это слишком приближенно.
Тут нужна ли сторонняя библиотека или писать свой ласапед.


у меня SQL server 2003 sp3 работает без библиотеки


не выпускали такой сервер...
11 май 11, 13:35    [10634890]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Eduard Minasyan
Member

Откуда:
Сообщений: 119
Winnipuh
Eduard Minasyan
пропущено...


у меня SQL server 2003 sp3 работает без библиотеки


не выпускали такой сервер...


извините 2005
11 май 11, 14:05    [10635241]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Eduard Minasyan
Mnior
Eduard Minasyan
DIFFERENCE или SOUNDEX
Это слишком приближенно.
Тут нужна ли сторонняя библиотека или писать свой ласапед.
у меня SQL server 2003 sp3 работает без библиотеки
Что работает?
Варианты ответа: SQL server, SOUNDEX :)) Му-ха-ха

Winnipuh
sys.dm_fts_parser
Сенкс, будем знать что что-то есть, разве что не щупал.

PS: по форуму ничего не находит по строке "sys.dm_fts_parser", даже этот топик. Бред.
11 май 11, 14:57    [10635788]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Mnior
Eduard Minasyan
пропущено...
у меня SQL server 2003 sp3 работает без библиотеки
Что работает?
Варианты ответа: SQL server, SOUNDEX :)) Му-ха-ха

Winnipuh
sys.dm_fts_parser
Сенкс, будем знать что что-то есть, разве что не щупал.

PS: по форуму ничего не находит по строке "sys.dm_fts_parser", даже этот топик. Бред.


о, йез поиск по форуму это отдельная пестня
11 май 11, 15:09    [10635908]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
да вот здесь посмотрите
http://www.anastasiosyal.com/
11 май 11, 15:41    [10636288]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
если конечно устраивает установка CLR
11 май 11, 15:57    [10636448]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Mnior
PS: по форуму ничего не находит по строке "sys.dm_fts_parser", даже этот топик. Бред.
Хэлп читают только чайники!
Ищите по строке "sys.dm_fts_parser"
11 май 11, 15:59    [10636472]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
Mnior
PS: по форуму ничего не находит по строке "sys.dm_fts_parser", даже этот топик. Бред.
Хэлп читают только чайники!
Ищите по строке "sys.dm_fts_parser"
С двойными кавычками, я имею в виду. Ибо

К сообщению приложен файл. Размер - 110Kb
11 май 11, 16:05    [10636564]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
вот вам топикстартер ссылки на использование уже встроенных функций нечеткого сравнения в SQL Server 2008 R2
тока жаль что это работает тока под x64

http://blog.hoegaerden.be/2011/02/05/finding-similar-strings-with-fuzzy-logic-functions-built-into-mds/

http://thefirstsql.com/2011/02/07/regular-expressions-advanced-string-matching-and-new-split-function-sql-server-2008-r2/

http://thefirstsql.com/2011/02/08/how-to-enable-master-data-services-mds-in-sql-server-2008-r2/
11 май 11, 16:55    [10637055]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
orunbek
да вот здесь посмотрите
http://www.anastasiosyal.com/
Опать не в теме.
Fuzzy это не словоформы. Словоформы это почти strong.

iap
Хэлп читают только чайники!
Ищите по строке "sys.dm_fts_parser"
Ибо
Ё, столько нового узнал в этой теме.
Даже не догадался, что там можно кликнуть и появится хелп. Синяя полоса и текст без подчёркивания боковым зрением определяется как декор.
И всё-таки хелп не абисняет сей ситуации. "_" ему не нраица или "."?
11 май 11, 19:40    [10638028]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
Mnior
orunbek
да вот здесь посмотрите
http://www.anastasiosyal.com/
Опать не в теме.
Fuzzy это не словоформы. Словоформы это почти strong.
...
...


Хмм... с помощью кода из http://www.anastasiosyal.com
проверяю идентичность, про которую писал топикстартер
select TraffPenalty.dbo.UDF_IM_Levenstein(N'Window', N'Windows') AS Levenstein      0,857142857142857
select TraffPenalty.dbo.UDF_IM_Levenstein(N'Window', N'Windowed') AS Levenstein    0,75
select TraffPenalty.dbo.UDF_IM_Levenstein(N'Win', N'Windows') AS Levenstein           0,428571428571429
11 май 11, 19:54    [10638073]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
orunbek, а так?:
select TraffPenalty.dbo.UDF_IM_Levenstein(N'Include', N'Exclude')
Поняли?

orunbek
проверяю идентичность, про которую писал топикстартер
Топик-стартер пишет не о дистанции в похожести слов, а о словоформах. Цитирую:
Newber
то есть получить идентичность?
только без like, так как нужны именно словоформы.
12 май 11, 10:20    [10639681]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
Mnior,

а млин, не внимательно прочитал, я оказывается обратил внимание тока на пример данных
12 май 11, 11:25    [10640203]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Mnior
Eduard Minasyan
пропущено...
у меня SQL server 2003 sp3 работает без библиотеки
Что работает?
Варианты ответа: SQL server, SOUNDEX :)) Му-ха-ха

Winnipuh
sys.dm_fts_parser
Сенкс, будем знать что что-то есть, разве что не щупал.

PS: по форуму ничего не находит по строке "sys.dm_fts_parser", даже этот топик. Бред.



есть еще метод.
Написать свой генератор словоформ, который будет по данному слову генерировать все его формы именно так, как
майкрософт это делает. Надо использовать их ком объект, который используется в индексном сервисе.
И оформить можно это в виде sqlclr к примеру.
Там только полтора недостатка:
1. не докуменитрвоано, но это не есть большая проблема, я делал для нескольких языков
1.5. лицензия - там написано, что мол нельзя использовать без лицензии... но тоже... каrбэ
12 май 11, 15:16    [10642156]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение словоформ  [new]
Newber
Member

Откуда: Planet Earth
Сообщений: 107
Ребята, спасибо Всем за советы.
Многое знал, но некоторые вещи, и ссылки пригодились и пригодятся думаю в будущем.

Winnipuh,
А не подскажите что за объект? или как его найти?
в идеале какой-нибудь бы "hello world" с ним или просто MSDN,HOWTO.

А вообще для чего собственно это нужно. опишу, может Вы поправите.

И так, существовал поиск (FTS).
Он работал и работает, и всё с ним хорошо, но нужно было его проапргейдить
а именно способом таким.
Фразы которые находились в колонке, имели одинаковый рейтинг(containstable).
и даже если фраза находилась в колонке в начале, это не "выводило" эту запись "выше"
например выше записи с найденной фразой конце строки.
Тут на форуме как вариант предложили парсить, запись через "sys.dm_fts_parser"
далее сравнивать все слова кея(может быть любой фразой) (а сравнение хотелось бы чтобы было как и в FTS поиске на подобие FORMSOF то есть "словоформовое" сравнение)
с результатом "sys.dm_fts_parser" ( или просто если не 2008й преобразовав строку в таблицу)
далее собрать индексы occurence... и чем меньше будет результат тем в order записи будут выше.
(это если реализовать это всё через функцию типа IsMoreLeft(DBstring,keywords) )
и думаю будет выглядеть так "order by RANK desc, IsMoreLeft(DBstring,keywords) ASC"

вот только не уверен в производительности.
база может быть пол миллиона записей.
даже если буду работать уже с отфильтрованными записями после обычного FTS поиска.
16 май 11, 00:20    [10655737]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить