Как закодировать 'Next in Results' в результатах поиска в PHP - PullRequest
0 голосов
/ 13 мая 2010

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

По факту, используя Solr в качестве поисковой системы для моего сайта, мы получаем 15 результатов на страницу. Когда вы нажимаете на результат, вы получаете страницу с подробной информацией, на которой есть ссылка «Далее в результатах», которая, очевидно, перенаправляет вас к следующему результату.

Каков наилучший способ сделать это? Я придумала несколько решений, но они либо слишком непрактичны, либо просто не работают.

Я мог бы сохранить все идентификаторы в массиве сеансов, затем взять один после текущего и поместить его в ссылку. Но, возможно, с сотнями / тысячами результатов, память, которая понадобится массиву, и снижение производительности при работе с ним не практично.

Я мог бы взять тот же подход и поместить его в базу данных, но мне все равно придется иметь дело с потенциально огромным массивом, когда я вытащу их из базы данных.

Или; Я мог бы снова выполнить поиск, только вернув идентификаторы, и взять тот, что находится за тем, на который мы сейчас смотрим. Я думаю, что это может быть лучшим вариантом? Хотя это выглядит немного грязно, а именно из-за того, что мне нужно выбрать идентификатор, который находится на другой «странице» (т.е. результат 16-го, 31-го и т. Д.). Если я не укажу, где это было в результатах, и не выберу оттуда, но это все равно не похоже на правильный способ сделать это.

Мне очень жаль, если это просто полная чепуха, любая помощь, как всегда, очень ценится,

Ура, ребята!

1 Ответ

0 голосов
/ 13 мая 2010

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

Хотя вы можете сделать это по-другому. Вы можете просто узнать идентификатор следующей записи с помощью простого запроса. это проще, чем кажется: я уверен, что вы можете найти токен, следующий за 10cant, если вы упорядочите их по номерам. Для записей базы данных просто сделайте то же самое;)

...