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

Откуда: г. Иркутск
Сообщений: 162
Изучаю возможности FTS для MS SQL Server 2008.
И наткнулся вот на такой неприятный сюрприз.
Если есть фраза "MS SQL Server2008",
то поиск будет осуществлен только по словам "MS", "SQL" и "Server2008", а просто по "2008" - нет.

Имеется ли возможность как-то заставить FTS разбивать на слова, учетывая числа?
1 окт 09, 13:03    [7729322]     Ответить | Цитировать Сообщить модератору
 Re: FTS: поиск чисел  [new]
Philin
Member

Откуда: г. Иркутск
Сообщений: 162
Для решения вышеозначенной ситуации приходит в головову только отделять при внесении в талицу текста цифры от букв.

Но, существует также проблема поиска дробных чисел
Если у меня есть фраза "присутвует человек - 10 (8 умных, 2 - так себе)",
то поиск по "10.8" успешно вернет мне ее.

Как же быть?
Неужели не использовать FTS, а изобретать велосипед?
2 окт 09, 11:39    [7733762]     Ответить | Цитировать Сообщить модератору
 Re: FTS: поиск чисел  [new]
Glory
Member

Откуда:
Сообщений: 104760
1. Цифры - это шумовые слова
2. Server2008 - это одно слово, а не два. FTS не ищет по вхождению подстроки в строку, только по началу строки
2 окт 09, 11:41    [7733782]     Ответить | Цитировать Сообщить модератору
 Re: FTS: поиск чисел  [new]
Philin
Member

Откуда: г. Иркутск
Сообщений: 162
>1. Цифры - это шумовые слова
Для Full-Text Search (SQL Server)? или вообще?
Понятно, что я привел просто пример.

На самом деле ситуация такая.
Необходимо сделать максимально быстрый поиск по названию лекарств. Номенклатуру присылают аптеки, то есть названия там внесены как попало и трогать это название не рекомендуется.
Вот пример:
"Аспирин кардио таб. п/о 100мг №20 (Bayer AG (рецепт.))"
"Аспирин Кардио тбл п/о 100мг N20"

И если будет производится поиск по слову "аспирин" и "20", то вторая позиция, конечно не найдется.

Приблизительно та же ситуация, с дробными числами.
Надеюсь, Glory, Вы не будете спорить, что в названии ЛС эти числа все же не шумовые.

>2. Server2008 - это одно слово, а не два. FTS не ищет по вхождению подстроки в строку, только по началу строки
Это я все понимаю, но все же считаю, что "1.5" это одно слово, а не два.

Мой вопрос следующий:
а) Можно ли задавать правила разбиения слов?
б) Если нет, то какие могут быть варианты решения проблемы?
2 окт 09, 12:12    [7734029]     Ответить | Цитировать Сообщить модератору
 Re: FTS: поиск чисел  [new]
Glory
Member

Откуда:
Сообщений: 104760
1. Для Full-Text Search SQL Server разумеется

"20" не является отдельным словом ни с какой логики. Потому что входит в состав №20 и N20

2. Разумеется 1.5 есть одно "слово". И именно поэтому вы не сможете искать его по .5
Также как и не сможете искать Server2008 только по 2008
2 окт 09, 12:24    [7734124]     Ответить | Цитировать Сообщить модератору
 Re: FTS: поиск чисел  [new]
Philin
Member

Откуда: г. Иркутск
Сообщений: 162
>"20" не является отдельным словом ни с какой логики. Потому что входит в состав №20 и N20
Неправда. В "№20" № - является разделителем слов, точно таким же как и пробел, я так понял. Поэтому при выполнении
select * from sys.dm_fts_parser('"Аспирин кардио таб. п/о 100мг №20 (Bayer AG (рецепт.))"', 1049, 0, 0)
одно из DisplayItem = "20".

>2. Разумеется 1.5 есть одно "слово".
Только если язык в качестве разделителя берет ".". Если ",", то будет 2 слова.
select * from sys.dm_fts_parser('"ГРАММИДИН 1,5МГ №20 ЗАЩЕЧ.ТАБ."', 1049, 0, 0)
select * from sys.dm_fts_parser('"ГРАММИДИН 1.5МГ №20 ЗАЩЕЧ.ТАБ."', 1049, 0, 0)
2 окт 09, 12:35    [7734220]     Ответить | Цитировать Сообщить модератору
 Re: FTS: поиск чисел  [new]
Glory
Member

Откуда:
Сообщений: 104760
Philin
>"20" не является отдельным словом ни с какой логики. Потому что входит в состав №20 и N20
Неправда. В "№20" № - является разделителем слов, точно таким же как и пробел, я так понял.

Угу. А N по такой логике тоже разделитель слов ?
2 окт 09, 12:38    [7734258]     Ответить | Цитировать Сообщить модератору
 Re: FTS: поиск чисел  [new]
Philin
Member

Откуда: г. Иркутск
Сообщений: 162
>Угу. А N по такой логике тоже разделитель слов ?
Нет, конечно.
Поэтому я и задаю вопрос: можно ли задавать правила разбиения слов?

Пока для себя я вижу решение в индексном поле
1) отделять цифры от букв слева
2) заменять все точки на запятые между цифрами.
2 окт 09, 12:49    [7734384]     Ответить | Цитировать Сообщить модератору
 Re: FTS: поиск чисел  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ну напишите свой Word Breaker и Stemmer
2 окт 09, 12:55    [7734454]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить