![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как лучше искать по текстовому полю? [D7, MSSQL]
ocean © (2009-04-15 12:49:00)Я хочу часто проводить поиск по полю varchar(2500) на вхождению подстроки в любом месте, соответственно нужно максимально ускорить этот поиск. Проиндексировать поле MS SQL не дал, мол максимум 900 символов. Что можно предпринять? Как лучше искать, Locate или SQL select?
ANB (2009-04-16 17:44:00) [1]
> если информация структурирована
Если бы. Это имя клиента, вбитое как попало.
Кщд (2009-04-16 13:11:00) [2]>Кщд (16.04.09 13:08) [16]
если информация структурирована, то нам, например, отлично помог ctx-индекс для поиска по достаточно большому хранилищу XML-документов
Кщд (2009-04-16 13:08:00) [3]>ANB (16.04.09 12:11) [14]
>А как в оракле такую фичу подключить ?
interMedia
sniknik (2009-04-16 13:03:00) [4]> такую фичу подключить ?
> места уже впритык на сервере.
а как ты думаешь эта фича реализована? где она будет хранить разбивку/индексы?
ANB (2009-04-16 12:11:00) [5]А как в оракле такую фичу подключить ?
Я задрался уже запросы распараллеливать ради такой ерунды.
И писать разбивку по словам для нашей базы - очень неоптимально - места уже впритык на сервере.
clickmaker (2009-04-15 17:55:00) [6]> к сожалению в SQL Server изначально не реализована возможность
> полнотекстового поиска на русском
реализована (начиная с 2005 точно), но не включена по умолчанию
stas (2009-04-15 17:09:00) [7]ocean (15.04.09 14:40) [8]
MSSQL 2005 юзай.
Anatoly Podgoretsky (2009-04-15 15:43:00) [8]
> К поиску тут относится только Locate
Но и его нельзя применить для поиска подстроки.
Надо отказаться от поиска и заменить выборкой с отбором по подстроке. Медленно, но что делать.
Anatoly Podgoretsky (2009-04-15 15:30:00) [9]Индексы или полнотекстовый поиск для подстроки, придется строить по всем вариантам поиска!
вариант
ариант
риант
иант
ант
и это только по одному слову, а не по совокупности слов строки.
Anatoly Podgoretsky (2009-04-15 15:23:00) [10]> ocean (15.04.2009 12:49:00) [0]
К поиску тут относится только Locate
ocean (2009-04-15 14:40:00) [11]Прочитал про полнотекстовый поиск, выглядит как то что нужно, но:
"к сожалению в SQL Server изначально не реализована возможность полнотекстового поиска на русском, украинском языках." Это все Кондолиза устроила. Не понял, как включить таблицу в полнотекстовый поиск не из среды MSSQL, а программно. Сейчас погоняю.
Ega23 (2009-04-15 14:08:00) [12]
> в mssql это уже есть, называется полнотекстовый поиск. нужно
> просто включить, и пользоваться.
Тяжелый он очень в MSSQL. К сожалению. И я не нашёл, как его настраивать тонко можно (игрался с MSSQL 2000).
sniknik (2009-04-15 13:55:00) [13]> Возможно неплохим решением будет создать подчиненную таблицу ключевых слов текста для поиска.
в mssql это уже есть, называется полнотекстовый поиск. нужно просто включить, и пользоваться.
Ega23 (2009-04-15 13:53:00) [14]Можно попробовать FullTextSearch подключить. Но не факт, что это офигенную скорость даст.
ocean (2009-04-15 13:51:00) [15]В поле плоский текст. Не знаю как оценить частоту, допустим раз в неск. секунд. С ключевыми словами интересная мысль, но тогда надо придумать, как их вычленять?
Sergey13 (2009-04-15 13:14:00) [16]> [0] ocean (15.04.09 12:49)
А что в этом поле? Как много азписей в таблице? Как часто надо искать?
Возможно неплохим решением будет создать подчиненную таблицу ключевых слов текста для поиска.
Кщд (2009-04-15 13:07:00) [17]>ocean (15.04.09 12:49)
в случае с произвольной подстрокой индекс бы ничего не дал в плане производительности)
Sergey13 (2009-04-15 13:03:00) [18]> [0] ocean (15.04.09 12:49)
> Как лучше искать, Locate или SQL select?
Сделай и сравни. Делов то на 10 минут.