Рекомендация по созданию функции фильтрации товаров для узкого круга результатов

Я создаю функцию "Сужение результатов поиска", аналогичную Лучшие покупки и Новое яйцо. Как лучше всего хранить выбранные пользователем фильтры в URL-адресе, которым можно поделиться или добавить в закладки?

Очевидный выбор — просто сохранить все выборки пользователя в строке запроса. Однако оба этих примера делают нечто гораздо более загадочное:

Лучшая покупка: http://www.bestbuy.com/site/olstemplatemapper.jsp?id=pcat17080&type=page&qp=crootcategoryid%23%23-1%23%23-1~~q70726f63657373696e6774696d653a3e313930302d30312d3031~~cabcat0500000%23%230%23%2311a~~cabcat0502000%23%230%23%23o~~nf518||24363030202d2024383939&list=y&nrp=15&sc=abComputerSP&sp=%2Bcurrentprice+skuid&usc=abcat0500000

Похоже, они присваивают поиску какое-то уникальное значение и временно хранят его на своей стороне. Или, может быть, обернуть свои идентификаторы БД кучей мусора, потому что они верят в безопасность через неизвестность?

Есть ли какой-то неотъемлемый недостаток в сохранении таких простых вещей? www.mydomain.com?color=blue&type=laptop

Поэтому, когда я выбираю размер экрана 17 дюймов в качестве фильтра, он просто перезагружает страницу с добавленной дополнительной строкой запроса: www.mydomain.com?color=blue&type=laptop&screen-size=17

Кроме того, чтобы уточнить, я бы, вероятно, использовал соответствующие идентификаторы из базы данных в URL-адресе, чтобы упростить/ускорить проверку и синтаксический анализ, но остается вопрос о том, есть ли какая-то проблема, которую я упустил в своем простом подходе.

Заранее спасибо!


person Cory House    schedule 04.12.2009    source источник


Ответы (3)


Одним из первых игроков в домене фасетного поиска была Endeca, и они до сих пор используются многими из крупные интернет-магазины (PC Connection, Home Depot, Walmart...). Вы можете заглянуть на их веб-сайт. Существует плагин Drupal для фасетного поиска. Посмотрите демонстрацию.

Я не думаю, что состав URL имеет большое значение, но на самом деле я думаю, что представление параметров в удобочитаемой форме может быть опасным. Одним из преимуществ использования «Управляемого поиска» является то, что вы можете избежать создания пустых наборов результатов, не допуская недопустимых комбинаций параметров. Если строка запроса доступна для редактирования пользователями, они могут получить недопустимые комбинации в обход управляемого поиска.

person cdonner    schedule 04.12.2009
comment
Иногда половина дела заключается в том, чтобы просто выяснить, какой термин нужно использовать в Google. Спасибо за подсказку по фасетному поиску. Я никогда не слышал этого термина. - person Cory House; 05.12.2009

Я думаю, что более удобочитаемый способ, то есть www.mydomain.com?color=blue&type=laptop&screen-size=17, является лучшим подходом. Просто убедитесь, что вы очищаете все, что приходит с URL-адреса, прежде чем оно попадет в базу данных.

person GSto    schedule 04.12.2009

Строка запроса имеет очень достижимую максимальную длину (255?), что, вероятно, является причиной сериализации.

person Paul Creasey    schedule 04.12.2009
comment
Практическая длина составляет 2048 на stackoverflow.com/questions/1344616/, но да, хороший момент. - person Cory House; 05.12.2009