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

Откуда:
Сообщений: 42
добрый день,

помогите пожалуйста с запросом к базе с полнотекстовым поиском

запись хранится в виде 'Canon PowerShot A2500'
в поиск на сайте вводятся разные выражения например: 'a 2500', 'a-2500'

но находит только если искать A2500

запрос
SELECT id, siteName
  FROM PRODUCTS_Products
  WHERE CONTAINS
                (siteName,'a2500'
                ) 



заранее благодарен
15 янв 16, 10:49    [18682478]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с полнотекстовым поиском  [new]
Glory
Member

Откуда:
Сообщений: 104751
Sergey Makarov
но находит только если искать A2500

Ну так у вас же "запись хранится в виде 'Canon PowerShot A2500'"
С чего вдруг сервер должен преобразовать 'a 2500', 'a-2500' в A2500 ?
15 янв 16, 10:51    [18682494]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с полнотекстовым поиском  [new]
LoopN
Guest
Попробуйте заменить на FREETEXT
15 янв 16, 10:52    [18682503]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с полнотекстовым поиском  [new]
Sergey Makarov
Member

Откуда:
Сообщений: 42
FREETEXT пробовал
находит все что угодно только не эту запись

например
CANON PowerShot A-490
15 янв 16, 10:56    [18682537]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с полнотекстовым поиском  [new]
LoopN
Guest
Тут нужен нечеткий поиск. В SQL SERVER его по умолчанию нет (есть только в BI).

Нужно искать в гугле по ключевым словам "Approximate string matching sql server" или "Fuzzy matching sql server"

Вот примеры функций или clr ХП:
http://www.pawlowski.cz/2010/12/sql_server-fuzzy-strings-matching-using-levenshtein-algorithm-t-sql-vs-clr/

По сути нужно получить % совпадения и выводить например больше 80%.
15 янв 16, 11:06    [18682623]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить