2009-12-04 1 views
1

Я строю функцию «Узкие результаты», аналогичную функции Best Buy's и NewEgg's. Какова наилучшая практика для хранения выбранных пользователем фильтров в URL-адресе, который может быть разделен/закладок?Лучшая практика для создания функции фильтрации «Узкие результаты»

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

Best Buy: 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

Оказывается, они назначая некоторое уникальное значение для поиска и хранения его временно на их стороне. Или, возможно, обертывание их db id в кучу мусора, потому что они верят в безопасность через неясность?

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

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

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

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

ответ

2

Одним из первых игроков в фасетном домене поиска был Endeca, и они по-прежнему используются многими из larger online stores (подключение к ПК, Home Depot, Walmart ...). Вы можете взглянуть на their website. Существует Drupal plug-in for faceted search. Проверьте demo.

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

+2

Иногда половина битвы просто выясняет, какой термин для Google - спасибо за подсказку на граненый поиск. Я никогда не слышал этого термина. –

1

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

0

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

+0

Практическая длина 2048 на http://stackoverflow.com/questions/1344616/max-length-of-query-string-in-an-ajax-get-request, но да, хорошая точка. –

Смежные вопросы