Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Incremental population of the full-text catalog  [new]
Alexander Chepack
Guest
Имеет ли смысл создавать индекс по timestamp column?
Никак не могу понять ускоряет ли это процесс для incremental обновления?
30 апр 01, 17:03    [6094]     Ответить | Цитировать Сообщить модератору
 Вдогонку  [new]
Alexander Chepack
Guest
Создал full-text каталог, выполнил Full population.
Таблица имеет timestamp поле, даже индекс создал по этому полю.
Ничего не меняю - запускаю Incremental population - по идее все должно завершиться мгновенно, а на самом деле процессор занят на 100% и выполнение занимает столько же времени как и в случае full population - вопрос - а чем же он занят??? Изменений же вообще не было ...

Т.е. он что тупо перебирает всю таблицу? Так для таблиц с миллионами записей он вечно этим заниматься будет. Черт - последний раз пытался full-text indexing год назад использовать - плюнул, сейчас вот снова идея возникла - ну опять все через задницу, похоже, сделано.

Есть у кого-нибудь практический опыт работы с этим безобразием?
30 апр 01, 17:32    [6095]     Ответить | Цитировать Сообщить модератору
 Похоже я тут сам с собой общаюсь, все остальные на демонстрации :)  [new]
Alexander Chepack
Guest
Продолжаю задавать вопросы о full-text indexing - с грехом пополам заработали индексы, теперь вот воюю с поиском.

Задача: есть таблица с двумя полями, включенными в full-text индекс, я хочу выбрать записи, содержащие два слова: LG и keeper. Проблема: если я использую для вбора CONTAINS(*,'LG keeper') то выбираются записи, в которых ОБА эти слова содержатся в ОДНОМ поле, записи в которых одно слово в одном поле, а другое в другом - не выбираются. Если использую FREETEXT(*,'LG keeper') то нужные мне записи выбираются, но также выбираются записи, содержажщие хотя бы одно слово хотя бы в одном из полей.

Как можно выбрать только те записи, которые содержат необходимые мне слова в любом поле - в том числе в разных полях.

Или я так и буду в этой ветке сам с собой общаться?
1 май 01, 20:37    [6096]     Ответить | Цитировать Сообщить модератору
 RE:Incremental population of the full-text catalog  [new]
SergSuper
Guest
Что бы Вам было не скучно одному в этой ветке дам Вам 2 совета:

1. Почитайте чего-нибудь про timestamp и подумайте - какое отношение он может иметь к full-text ?

2. Насчет нужной Вам выборки - есть такое ключевое слово OR ...
3 май 01, 10:24    [6097]     Ответить | Цитировать Сообщить модератору
 RE:Incremental population of the full-text catalog  [new]
Alexander Chepack
Guest
OR - не подходит, так как мне нужно AND - а вот работает этот самый AND только если оба слова в одной колонке, если в одной записи, но в разных колонках - хрен Вам (это в случае CONTAINS, FREETEXT выбирает записи, содержащие хотя бы одно слово, потому наверное и зовут FREE...). Т.е. в одном случае нужные записи не выбираются, а в другом выбирается много лишних. Можно, конечно, по рангу сортировать, но лучше бы без лишних.

О timestamp - не понял к чему Вы это - наверное, к incremental update?
Так я Вам совершенно конкретно заявляю - если у Вас есть таблица с 10 000 000 записей, и вы изменили ОДНУ запись, то при incremental update SQL Server будет сканировать ВСЕ 10 000 000 записей, будет проверять timestamp в КАЖДОЙ записи и для измененных записей будет обновлять full-text index - займет это все "всего лишь" пару часов. Удобно, правда? Я даже знаю почему он так поступает - timestamp хорош при изменениях, а вот что делать если Вы удалили запись? timestamp - то Вы тоже удалили. Хотя incremental full-text index update сейчас для меня не проблема - в SQL2K появился еще один механим, позволяющий изменять full-text индексы в реальном времени, timestamp, кстати, для этого не нужен..

Так что спасибо за советы, но они не помогли. Может еще идеи есть?

А язвить не стоит - я с SQL Server'ом с 93-го года работаю (с 4.21a) - так что BOL читал .
3 май 01, 14:19    [6098]     Ответить | Цитировать Сообщить модератору
 RE:Incremental population of the full-text catalog  [new]
SergSuper
Guest
Насчет timestamp был не прав, пардон, невнимательно прочитал.

OR я имел ввиду использовать так:
where CONTAINS(fld1,'LG keeper') OR CONTAINS(fld2,'LG keeper')

а это я не язвлю, я шутить пытаюсь
3 май 01, 15:11    [6099]     Ответить | Цитировать Сообщить модератору
 RE:Incremental population of the full-text catalog  [new]
Alexander Chepack
Guest
Да вобщем-то можно так запрос построить, но запрос генерится клиентским приложением, поэтому не хотелось бы вносить изменения в приложение если мы третье поле, например, в full-text indexing добавим.
3 май 01, 17:39    [6100]     Ответить | Цитировать Сообщить модератору
 И кроме того - не работает это  [new]
Alexander Chepack
Guest
В том-то и проблема, что если одно поле содержит LG, а другое keeper - то Ваш запрос ничего не вернет - CONTAINS работает только если ВСЕ слова содержатся в ОДНОМ поле - в этом и заключается моя проблема.
3 май 01, 17:42    [6101]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить