2017-06-28 1 views

Répondre

0

Pour trouver un filtre basé sur la distance entre un point de référence et un point donné par un champ dans le document, vous pouvez utiliser la fonction geo.distance dans votre requête de filtre $. Par exemple, si votre point de géo était dans le champ « emplacement », vous pouvez filtrer à tous les résultats qui sont à moins de 10km de ce point avec la clause suivante:

$filter=geo.distance(location, geography'POINT(-122.131577 47.678581)') le 10 

Azure Search prend en charge également le filtrage géographique en spécifiant un polygone de délimitation en utilisant la fonction geo.intersects:

$filter=geo.intersects(location, geography'POLYGON((-122.031577 47.578581, -122.031577 47.678581, -122.131577 47.678581, -122.031577 47.578581))') 

Si vous cherchez quelque chose comme geo.distance(...) lt someOtherField qui est actuellement non pris en charge. De votre question, il semble que vous ayez un champ dans le document, et un point statique que vous souhaitez vérifier, filtrant par tous les documents qui sont dans une certaine plage. Cela devrait être réalisable avec geo.distance. Si cela ne couvre pas votre scénario, pouvez-vous fournir plus de détails et peut-être un exemple concret du problème que vous essayez de résoudre?

Vous pouvez trouver plus d'informations sur le filtrage en utilisant OData geo.distance et geo.intersects dans le Azure Search OData syntax documentation

+1

Merci @EvanBoyle. Ce que nous devons essentiellement faire est ceci: '$ filter = geo.distance (emplacement, geography'POINT (-122.131577 47.678581) ') le field_value' où field_value est un champ entier sur chaque document. Je suis également arrivé à la conclusion que ce n'était pas soutenu, mais j'espère qu'il y a une manière créative de traiter le cas d'utilisation. Le scénario est, nous cherchons des personnes qui sont disposées à voyager jusqu'à et y compris le point de référence (constante) que nous recherchons. Avoir du sens? –