Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > [VB6] Поисковик с запоминанием запросов


Автор: FallFan 21.7.2009, 23:44
Все доброго времени суток!

Создается новая таблица "Прошлые Запросы" с тремя полями ("Запрос", "Индексы строк вывода на запрос", "Количество записей на момент запроса"). 

Далее реализуется алгоритм при совпадении текущего запроса с полем "Запрос" из таблицы "Прошлые Запросы" ("Запрос" = Текущий запрос):

1. Если 
       "Количество записей на момент запроса" < Текущее количество записей,
    То 
       производим поиск для запроса заново
    И
       обновляем информацию для запроса в "Прошлые Запросы".

2. Если 
       "Количество записей на момент запроса" = Текущее количество записей,
    То 
       производим вывод строк  с индексами = "Индексы строк вывода на запрос".

3. Если 
       "Количество записей на момент запроса" > Текущее количество записей,
    То 
       производим поиск для запроса в записях у которых индекс > "Количество записей на момент запроса" и выводим их
    И
       добавляем к уже выведеным записям, записи у которых индекс = "Индексы строк вывода на запрос".
    И
       обновляем информацию для запроса в "Прошлые Запросы".      

Количество записей будет от 1000 до 5000 (в основной базе) и от 100 до 1000 в "Прошлые Запросы", а колличество одновременных пользователей максимум 15-20. Предел задержки вывода результата 1-1.5 мин. (т.е. не критично). Поиск по всем записям основной базы будет редким исключением, т.к. введен поиск в определенных категориях.

Вопрос: Будет ли ощутимый прирост в скорости работы программы при такой реализации, если принять, что каждый текущий запрос имеет 
              вероятность в 50% совпасть с "Запрос" из "Прошлые Запросы"?
              ... 25% ?

P.S Если записи в основной базе изменены (что так же будет исключением), то индексы измененных записей будут запоминаться и передаваться отдельно и результат добавляться к результату вышеприведенного алгоритма.

Автор: neic 23.7.2009, 10:29
Блин, ты всегда как-то запутано говоришь своими псевдоалгоритмами.

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

Автор: Naghual 23.7.2009, 11:16
Эффект будет достигнут только при условии, что скорость доступа к промежуточным поисковым таблицам + их обновление будет превышать скорость поиска этих данных.

По вашему алгоритму непонятно что будет происходить, если записи изменялись. Не их количество, а именно их содержание.

Автор: FallFan 6.8.2009, 16:49
  Программа (функция) выполняет  простой поиск по БД (Access 2003). Имеются поля "Вопрос", "Ответ", "Комментарий" с типом данных «MEMO», поле "Index", тип данных «числовой» и поле «Flags» с типом данных «текстовый». Поиск происходит по полям "Вопрос", "Ответ", "Комментарий".
 
   Заливать многостраничный тест в БД, пока не собираюсь – ограничиваюсь ссылками на файлы, поэтому возможно с «MEMO» перейду на «текстовый».

   На выходе программа(Функция) выдает номера записей ("Index") при совпадении.

   В поле "Flags" записываются флаги состояния записи (новая запись, нет ответа, нет комментария и т.д) туда же вставлю флаг измений записи.  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)