2009-08-28 8 views
0

Nous construisons une grande interface de recherche avec près de 70 propriétés. La plupart de ces propriétés sont booléennes (ne contiennent que 0 ou 1), environ 12 sont avec des valeurs int et certaines sont des chaînes.Formulaire de recherche url structure

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.... 

Notre objectif est d'avoir une URL courte qui contiendra toutes les propriétés de recherche, permettant ainsi de stocker/envoyer des données de recherche exactes simplement en se souvenant de l'URL. Je sais que tout cela peut être fait avec de nombreux paramètres dans la chaîne d'URL, mais mon patron est persistant.

Nous avons compris comment représenter des valeurs booléennes:

Valeurs de carte à une représentation binaire (00010101011) à chaque position représentant une variable. Nous transmettons cette chaîne codée à une contrepartie plus courte (AB), par ex. Hex.

Mais quand il s'agit de propriétés qui contiennent des valeurs, nous n'avons pas décidé comment procéder. Des idées?

+0

Les personnes ne se souviendront pas des espaces-détenteurs dans une chaîne binaire arbitraire. Envisagez simplement d'avoir des valeurs par défaut pour les paramètres non spécifiés, utilisez le schéma de codage de paramètres déjà utilisé partout ailleurs sur le web, et ne réinventez pas la roue. –

+0

Propriétés qui contiennent des valeurs ... Je suppose que vous voulez dire des propriétés qui contiennent des chaînes de caractères? – ryeguy

+0

Nous allons fournir une boîte de sélection pour une couleur de propriété, l'utilisateur va sélectionner une valeur, par ex. 20 (identifiant de couleur). Notre intention n'est pas que les utilisateurs puissent modifier l'URL, mais être décents et de préférence codés. – gregor

Répondre

2

Vous pouvez encore plus simplifier. Si la base de données ne sont pas un problème, vous pouvez stocker les recherches des personnes dans le databse, et donnez urls de quelque sorte comme ceci:

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

et donner aux utilisateurs l'url:

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

Je préfère utiliser cette méthode, car elle est invisible du point de terminaison de l'utilisateur, elle garde l'URL courte et vous pouvez suivre (facilement) ce que les gens recherchent, au cas où vous souhaiteriez optimiser votre site pour plus de facilité :).

[Modifier] En outre, vous pouvez utiliser un hash pour le (search_id) afin que les recherches ne soient pas facilement devinées par d'autres utilisateurs.

+0

Une bonne idée, devra donner à celui-ci quelques réflexions – gregor

0

Si vos valeurs sont finies et statiques, attribuez-leur un nombre.

Si la combinaison de tous les paramètres de recherche possibles est finie, il est également possible de hacher le tout et d'utiliser ce hachage comme paramètre d'URL reposant.

+0

Pensé à ce sujet, mais nous avons dissmissed cette option en raison de la longueur de l'URL – gregor

Questions connexes