2012-01-03 1 views
0

Imaginez que vous créez un site Web qui permet, entre autres, de rechercher des voitures de location en fonction du prix. Certaines voitures de location sont plus populaires à certains moments de l'année que d'autres, de sorte que leur prix varie en fonction de la date. Par exemple, une voiture peut coûter 90 $ par jour la plupart de l'année, sauf pour Décembre & Mars, quand il coûte 110 $/jour, et en Janvier & Février, il coûte 130 $/jour. Est-il possible d'avoir un champ calculé à Solr, de sorte que vous pouvez rechercher une voiture qui coûte moins de $ X/jour pendant la durée de votre location? Je suis nouveau à Solr, donc n'ai absolument aucune idée si c'est possible ou pas - désolé si je pose une question stupide.Recherche basée sur une valeur changeante dans Solr

Une possibilité que je suis tombé serait d'indexer l'élément une fois pour chaque prix, et avoir des dates de début et de fin pour chacun d'eux. Cela fait face aux changements de prix, mais ne fonctionnera pas pour les locations qui traversent les limites de prix; par exemple, un client pourrait vouloir louer une voiture pour une semaine en février et deux semaines en mars - nous finirions par ne pas trouver la voiture dans ce cas. Je utilise Solr 3.5. Est-il possible de le faire en utilisant une FunctionQuery? J'ai vu de la documentation sur eux, mais tous les exemples que j'ai vus les utilisent pour renvoyer une valeur calculée, plutôt que d'effectuer une recherche sur cette valeur calculée. Si je ne peux pas faire cela en utilisant FunctionQuery, comment pourrais-je le faire?

Répondre

1

Je pense que cela pourrait être possible:

Dans votre index, vous pouvez avoir différents types de colonnes contenant les différents prix des saisons différentes. Dans votre requête, vous devez utiliser un produit sur le prix au cours d'une certaine saison contre le nombre de jours dans cette saison, et le somme du produit sur le prix pendant l'autre saison contre le nombre de jours dans cette saison. Oui, vous devrez utiliser FunctionQuery. Le moyen de fournir combien de jours tombe dans quelle saison que vous aurez probablement à faire sur le client qui appelle le service Web solr. En outre, vous pouvez essayer d'appliquer une requête de filtre sur le résultat pour choisir le montant que l'utilisateur est prêt à payer.

Questions connexes