![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание полнотекстового индекса через SQL-запрос [D7, MSSQL]
Sergey18 © (2004-11-24 11:24:00)Есть простая таблица Articles1 (MSSQLServer2000):
1) ArcticleID - Int, primary key, identity
2) ArticleText - Text, not null
Есть несколько просьб-вопросов:
1) Приведите, пожалуйста, пример запроса, который позволил бы
создать полнотекстовый индекс для поля ArticleText. Данные таблицы создаются в run-time программы в большом количестве.
2) Возможно ли через SQL-запрос добавить shedule-задание на full/incremental population/update index?
3) Не будет ли все жутко тормозить, если в базе будет, скажем, около 1000 подобных таблиц, в каждой из которых будет по ~100-200 тысяч записей? Т.е. другими словами, такое разделение планировалось для повышения скорости поиска текста в информации, т.к. в таблице Articles1 - цифра 1 - это номер уникального поля ChapterID таблицы Chapters. Оправданы ли такие действия?
Johnmen (2004-11-25 10:16:00) [1]>Sergey18
При наличии полнотекстового индекса поиск с использованием предиката CONTAINS на таблице ~ 200 т.з. и машине типа PIV займет такое количество времени, что ты его не успеешь померить. :) Т.е. сравнимо с обычным поиском по обычному индексированному полю.
Johnmen (2004-11-25 10:03:00) [2]>sniknik © (24.11.04 18:40) [5]
Примерно так и построена стандартная поддержка полнотекстового поиска. Т.е. строится словарь, индексируются слова и т.д. и т.п.
sniknik (2004-11-24 18:40:00) [3]будет тормозить,
насколько помню (обсуждалось) лучший способ (самый скоростной) это держать паралельно с текстом таблицу слов из текстов и ссылок вхождений в текст, таблица со словами с индексом, при поиске идет разбор выражения на слова поиск по ним, по ссылкам можно узнать где какое находится и естественно тот текст что включает все слова из поиска. (чтото типа интенетовских поисковиков)
добавление текста становиться более проблемным конечно, но поиск самый скоростной. надеюсь понятно обьяснил ;).
Johnmen (2004-11-24 11:46:00) [4]BOL - Books Online хелп по MSSQL серверу.
Sergey18 (2004-11-24 11:40:00) [5]Sergey13 ©
> Не есть хорошо.
Почему?
Johnmen ©
Насколько помню, в BOL есть описание с примерами.
Можно полюбопытствовать, а что такое BOL?
> И конечно же, что бы это (поиск по полнотекстовому индексу) работало, должен быть запущен соответствующий процесс (MSSearch).
Ну, это понятно... Вручную-то, через Enterprise Manager я могу создавать подобное и это даже работает. :) Но, я же не могу, каждый раз при добавлении новой главы и создания таблицы Articles#ChapterID, запускать Enterprise Manager. Это не спортивно как-то. В интернете ничего похожего найти не могу... :(
P.S. Ответы на 2-ой и 3-ий вопрос тоже очень интересны.
Johnmen (2004-11-24 11:34:00) [6]Насколько помню, в BOL есть описание с примерами.
И конечно же, что бы это (поиск по полнотекстовому индексу) работало, должен быть запущен соответствующий процесс (MSSearch).
Sergey13 (2004-11-24 11:33:00) [7]2Sergey18 (24.11.04 11:24)
Батюшки, тезка почти полный. 8-)
Я не знаю MSSQL, но думаю, что
>Данные таблицы создаются в run-time программы в большом количестве.
Не есть хорошо.