Наилучшая практика для создания функции фильтрации продуктов «Сузь свои результаты» - PullRequest
1 голос
/ 05 декабря 2009

Я создаю функцию «Сузить результаты», аналогичную Best Buy's и NewEgg's . Как лучше хранить выбранные пользователем фильтры в 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, чтобы упростить / ускорить проверку и анализ, но остается вопрос о том, есть ли какая-то проблема, которую я упускаю в моем простом подходе.

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

Ответы [ 3 ]

2 голосов
/ 05 декабря 2009

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

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

1 голос
/ 05 декабря 2009

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

0 голосов
/ 05 декабря 2009

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

...