2009-08-28 87 views
0

我們正在構建一個包含近70個屬性的大型搜索界面。大多數這些屬性是布爾值(僅保存0或1),大約12個是int值,有些是字符串。搜索表單url結構

goal: http://www.example.com/q/test_search/fdgREGd3vfS323 
want to avoid: http://www.example.com/q/test_search/?val_12=1000&val_120=0&val_4=XY.... 

我們的目標是有一個簡短的網址將舉行所有的搜索性能,從而可以存儲/發送準確的搜索數據只是記住網址。

我知道這可以通過url字符串中的許多參數完成,但我的老闆是持久的。

我們已經想出如何表示布爾值:

地圖值以二進制表示(00010101011)與表示一個可變的每個位置。我們將這個字符串編碼成例如較短的對應物(AB)。十六進制。

但是,當涉及到屬性,持有價值觀,我們還沒有決定如何進行。有任何想法嗎?

+0

人們不會記住任意二進制字符串中的佔位符。考慮簡單地使用未指定參數的默認值,請使用Web上其他地方已經使用的參數編碼方案,並且不要重新發明輪子。 – 2009-08-28 20:28:54

+0

持有值的屬性...我假設你的意思是持有字符串的屬性? – ryeguy 2009-08-28 20:30:02

+0

我們將提供一個屬性顏色的選擇框,用戶將選擇一個值,例如20(顏色標識)。我們的目的不是爲了讓用戶能夠修改網址,而是要體面的,最好是編碼 – gregor 2009-08-28 20:42:13

回答

2

您可以更簡化它。如果數據庫是沒有問題的,你可以存儲在DATABSE人民的搜索,並給出了某種類似這樣的網址:

user_searches: 
search_id | prop1 | prop2 | prop3 | .... | propN 

,給用戶的網址,如:

http://example.com/search/(search_id) 

我更喜歡使用這種方式,因爲它從用戶的終點看不見發生了什麼,它保持了網址短,並且可以保持(輕鬆)跟蹤人們搜索的內容,以防您想要優化網站的可用性。

此外,您可以使用散列(search_id),以便搜索不會被其他用戶輕易猜出。

+0

一個好主意,將不得不給這個想法 – gregor 2009-08-29 06:00:55

0

如果您的值是有限且靜態的,請爲其分配一個數字。

如果所有可能的搜索參數的組合都是有限的,還可以選擇散列整個事物並將該散列用作您寧靜的URL參數。

+0

想到了這一點,但我們因爲網址的長度而反駁了這個選項 – gregor 2009-08-29 06:00:09