Ricerca e classificazione dei risultati per posizione geografica in Amazon CloudSearch - Amazon CloudSearch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Ricerca e classificazione dei risultati per posizione geografica in Amazon CloudSearch

Se si memorizzano percorsi nei dati del documento utilizzando unlatlon, è possibile utilizzare il campohaversinin un'espressione Amazon CloudSearch per calcolare la distanza tra due posizioni. L'archiviazione delle posizioni nei dati dei documenti ti permette anche di effettuare ricerche con facilità all'interno di determinate aree.

Ricerca all'interno di un'area in Amazon CloudSearch

Per associare una posizione a un documento di ricerca, puoi archiviare la latitudine e la longitudine della posizione in un campo latlon utilizzando la notazione in gradi decimali. I valori vengono specificati come elenco separato da virgole,lat,lonAd esempio35.628611,-120.694152. L'associazione di una posizione con un documento ti consente di limitare facilmente le occorrenze di ricerca a una data area con il parametro fq.

Per utilizzare un riquadro di delimitazione per limitare i risultati a una particolare area
  1. Determina la latitudine e la longitudine degli angoli superiore sinistro e inferiore destro dell'area interessata.

  2. Utilizza il parametro fq per filtrare i documenti corrispondenti utilizzando le coordinate del riquadro di delimitazione. Ad esempio, se includi un campo location in ogni documento, potresti specificare il filtro del riquadro di delimitazione come fq=location:['nn.n,nn.n','nn.n,nn.n'] . Nel seguente esempio, le corrispondenze di restaurant sono filtrate in modo che solo le occorrenze nell'area del centro città di Paso Robles, California, siano incluse nei risultati.

    q='restaurant'&fq=location:['35.628611,-120.694152','35.621966,-120.686706']&q.parser=structured

Ordinamento dei risultati per distanza in Amazon CloudSearch

Puoi definire un'espressione come parte della tua richiesta di ricerca per ordinare i risultati in base alla distanza. Le espressioni Amazon CloudSearch supportano ilhaversinFunzione, che calcola la distanza ortodromica tra due punti su una sfera utilizzando la latitudine e la longitudine di ciascun punto. Per ulteriori informazioni, vedere Haversine formula. La distanza risultante viene restituita in chilometri.

Per calcolare la distanza tra ogni documento corrispondente e l'utente, trasmetti la posizione dell'utente alla funzione haversin e fai riferimento alle posizioni dei documenti archiviate in un campo latlon. Puoi specificare la latitudine e la longitudine dell'utente in gradi decimali e accedere alla latitudine e alla longitudine archiviate in un campo latlon come FIELD.latitude e FIELD.longitude. Ad esempio,expr.distance=haversin(userlat,userlon, location.latitude,location.longitude).

Per usare l'espressione per ordinare i risultati di ricerca, specifica il parametro sort.

Ad esempio, la seguente query ricerca i ristoranti e ordina i risultati in base alla distanza rispetto all'utente.

q=restaurant&expr.distance=haversin(35.621966,-120.686706,location.latitude,location.longitude)&sort=distance asc

Tieni presente che devi specificare in modo esplicito la direzione dell'ordinamento, ossia asc o desc.

Puoi includere nei risultati di ricerca la distanza calcolata per ogni documento specificando il nome dell'espressione con il parametro return. Ad esempio,return=distance.

Inoltre, puoi usare il valore della distanza in espressioni più complesse per tenere conto di altre caratteristiche, come la rilevanza di un documento _score. Nel seguente esempio, un'espressione di seconda classificazione utilizza entrambi il valore di distance calcolato per il documento e il relativo valore _score di rilevanza.

expr.distance=haversin(38.958687,-77.343149,latitude,longitude)&expr.myrank=_score/log10(distance)&sort=myrank+desc
Suggerimento

Perché queste query di esempio funzionino, devi configurare l'indice con un campo latlon e disporre dei dati location nei documenti:

{ "fields": { "location": "40.05830,-74.40570" } }

Se il campo non esiste, quando esegui una ricerca potresti ricevere il seguente messaggio di errore:

Syntax error in query: field (location) does not exist.

Per ulteriori informazioni sull'utilizzo di espressioni per ordinare risultati di ricerca, consultare Controllo dei risultati delle ricerche.