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

Откуда:
Сообщений: 266
Добрый день.

Есть запрос вида:
SELECT * FROM table WHERE about like '%$text%'


Так вот если $text = 'тестовая фраза', то результатов 20, а если $text = 'фраза тестовая', то результатов 10.
Как сделать запрос, чтобы в дух случаях были одинаковые результаты(20 результатов поиска)?
22 мар 13, 08:59    [14080103]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать, чтобы количество результатов по поиску было одинаково?  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
Amateur7,

или

.можно FTS прикрутить
22 мар 13, 09:06    [14080128]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать, чтобы количество результатов по поиску было одинаково?  [new]
Dima T
Member

Откуда:
Сообщений: 15596
Amateur7
Так вот если $text = 'тестовая фраза', то результатов 20, а если $text = 'фраза тестовая', то результатов 10.
Как сделать запрос, чтобы в дух случаях были одинаковые результаты(20 результатов поиска)?

На самом деле результатов 30 :)
разбивай сначала фразу на слова и дальше так
SELECT * FROM table WHERE about like '%тестовая фраза%' or about like '%фраза тестовая%'

или
SELECT * FROM table WHERE about like '%тестовая%' and  about like '%фраза%'

во втором способе может лишнее выбраться, т.к. не учитывается что слова должны быть рядом, например "фраза какая-то ... тестовая система"
22 мар 13, 09:18    [14080153]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать, чтобы количество результатов по поиску было одинаково?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Поэтому и спросил - в самом запросе sql это возможно сделать или нужно до запроса разбивать?
22 мар 13, 09:20    [14080166]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать, чтобы количество результатов по поиску было одинаково?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31783
Amateur7
Добрый день.

Есть запрос вида:
SELECT * FROM table WHERE about like '%$text%'



Так вот если $text = 'тестовая фраза', то результатов 20, а если $text = 'фраза тестовая', то результатов 10.
Как сделать запрос, чтобы в дух случаях были одинаковые результаты(20 результатов поиска)?
Сервер не ищет слова, он ищет точное соответствие последовательности букв. Никаким "разбиением" вы не достигнете нужного результата.

Вам нужно использовать полнотекстовый поиск, если вы хотите искать именно слова.
22 мар 13, 10:07    [14080366]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать, чтобы количество результатов по поиску было одинаково?  [new]
iap
Member

Откуда: Москва
Сообщений: 47050
Amateur7
Поэтому и спросил - в самом запросе sql это возможно сделать или нужно до запроса разбивать?
Лучше бы точно сказали, что надо сделать.
Между 'тестовая' и 'фраза' должен быть ровно один пробел?
Любое количество пробелов? Табуляция тоже может быть? Перевод строки?
Что там вообще допускается и в каком количестве?

alexeyvg, разбиением можно получить практически любой нужный результат.

Только я не понял - почему "до запроса разбивать"? Почему не "в запросе разбивать"?
22 мар 13, 10:46    [14080671]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать, чтобы количество результатов по поиску было одинаково?  [new]
Amateur7
Member

Откуда:
Сообщений: 266
iap,
нужно чтобы табуляция не учитывалась, перевод строки и количество пробелов тоже не учитывались(т.е. чтобы всегда был один пробел, т.к. пользователь может случайно и два пробела вместо одного сделать).

В принципе сейчас есть вариант с разбиение до запроса, се хорошо работает, но хотелось бы узнать возможности разбиения самом запросе по данному примеру.
22 мар 13, 17:21    [14083751]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить