постраничный вывод результатов поиска

zerkms

TDD infected
Команда форума
постраничный вывод результатов поиска

привет...

задача: сделать постраничный вывод результатов поиска

стою перед выбором:

а) поиск выполнять каждый раз на каждой из страниц:
плюсы: данные отображаются самые новые
минусы: лишняя загрузка процессора при переходе от страницы к странице

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



ps: сам алгоритм постраничного вывода я здесь не затрагиваю.
 

DoctorD

Guest
твоя задача "сделать постраничный вывод результатов поиска"

из названия я могу понять только так:
а. произвести поиск
б. постранично вывести его результаты

при чем тут "поиск выполнять каждый раз на каждой из страниц"
что это вообще такое? как это делается? для каких еще страниц выполнять поиск если еще нету никаких страниц до начала поиска.
 

zerkms

TDD infected
Команда форума
объясняю:

юзверь выполнил поиск - получил результат

200 результатов, они отображаются постранично. всё вроде нормально.

потом выбирает вторую страницу - получает соот-но вторую страницу - а ОТКУДА будут браться данные?? см выше.

или вариант а) - заново выбираться, б) - результат поиска сохранён - соотно берутся оттуда
 

neko

tеam neko
zerkms
странные люди
ну какой ты ответ ожидаешь получить на такой вопрос?
 

DoctorD

Guest
zerkms

думаю правильный ответ а.)

но на всякий случай почитай тут:
http://detail.phpclub.net/article/2000-12-05#part_3

и вообще - вставь назад свой 286 процессор в стиральную машинку, тогда не будет "минусы: лишняя загрузка процессора при переходе от страницы к странице"
 

zerkms

TDD infected
Команда форума
спасибо за ссылку - но постраничный вывод - решённая задача, о нём я речи не вёл

2 neko: я в любом случае сделал бы а) но интересно чужое мнение
 

DoctorD

Guest
и еще, мне нравится этот пункт:

"минусы: данные могут быть устаревшими, т.к. происходит запись результатов поиска и их отображение"

интересно просто с какой интенсивностью обновляются результаты или как "быстро" работает поисковик что может возникнуть эта проблема =)
 

HEm

Сетевой бобер
правильно вопрос должен был прозвучать так: "Кеширование данных при постраничном выводе"
Зависит от твоей реализации поиска.
Кстати, как ты, возможно, заметил, в этом форуме (vBulletin) результаты поиска кешируются
 

DoctorD

Guest
zerkms
там вроде написано как вести поиск по базе, не только выводить рез-ты =)

-~{}~ 16.08.04 11:39:

HEm
а куда кэшируются?
 

neko

tеam neko
zerkms
это на 100% процентов зависит от того какие данные
как часто они обновляются
какие потери будут если человек получит неактуальную информацию

помоему это очевидно
а ты об этом ни слова и просишь совета
 

zerkms

TDD infected
Команда форума
neko
информация стандартная: поиск производится в новостях/статьях/комментах к ним etc...

неактуальность следовательно будет заключаться лишь в том, что отображатся будут результаты на момент поиска, но не новые
 

neko

tеam neko
zerkms
да мне все равно в общем-то что у тебя там
потому что если ты ответишь для себя на эти вопросы, то ты и этого не задашь

речь о том, что бывают жизенные ситуации
если шефу надо узнать кто уже вышел на работу из 5го отдела, то лучше бы это искать каждый раз заново

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

DoctorD

Guest
zerkms

что значит "результаты на момент поиска, но не новые" ????
у тебя поиск 3 дня идет?
используй при поиске LIMIT и все будет чики-пики =)
 

neko

tеam neko
DoctorD
ты не понял
сядь в углу подумай, и не пиши ерунды
 

HEm

Сетевой бобер
DoctorD
в базу конечно
могу привести формат таблицы и пару строк примера
[sql]
CREATE TABLE `search` (
`searchid` int(10) unsigned NOT NULL auto_increment,
`query` mediumtext NOT NULL,
`postids` mediumtext NOT NULL,
`dateline` int(10) unsigned NOT NULL default '0',
`querystring` varchar(200) NOT NULL default '',
`showposts` smallint(6) NOT NULL default '0',
`userid` int(10) unsigned NOT NULL default '0',
`ipaddress` varchar(20) NOT NULL default '',
PRIMARY KEY (`searchid`),
KEY `querystring` (`querystring`),
KEY `userid` (`userid`)
) TYPE=MyISAM;[/sql]
INSERT INTO `search` (`searchid`, `query`, `postids`, `dateline`, `querystring`, `showposts`, `userid`, `ipaddress`) VALUES (1447, '1=1 AND NOT (thread.forumid=\'8\' OR thread.forumid=\'24\') AND post.userid=\'80\'', '', 1092406773, '', 1, 0, '207.46.98.32');
INSERT INTO `search` (`searchid`, `query`, `postids`, `dateline`, `querystring`, `showposts`, `userid`, `ipaddress`) VALUES (1448, '1=1 AND NOT (thread.forumid=\'8\' OR thread.forumid=\'24\') AND post.userid=\'8\'', '', 1092409541, '', 1, 0, '207.46.98.32');
 
Сверху