

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Pencarian dan Peringkat Hasil berdasarkan Lokasi Geografis di Amazon CloudSearch
<a name="searching-locations"></a>

Jika Anda menyimpan lokasi dalam data dokumen menggunakan `latlon` bidang, Anda dapat menggunakan `haversin` fungsi dalam CloudSearch ekspresi Amazon untuk menghitung jarak antara dua lokasi. Menyimpan lokasi dengan data dokumen Anda juga memungkinkan Anda untuk dengan mudah mencari di dalam area tertentu.

**Topics**
+ [Mencari Dalam Area di Amazon CloudSearch](#within-area)
+ [Menyortir Hasil berdasarkan Jarak di Amazon CloudSearch](#sorting-by-distance)

## Mencari Dalam Area di Amazon CloudSearch
<a name="within-area"></a>

Untuk mengaitkan lokasi dengan dokumen pencarian, Anda dapat menyimpan lintang dan bujur lokasi di `latlon` bidang menggunakan notasi derajat desimal. Nilai-nilai ditentukan sebagai daftar dipisahkan koma, `lat,lon` —misalnya. `35.628611,-120.694152` Mengaitkan lokasi dengan dokumen memungkinkan Anda untuk dengan mudah membatasi klik pencarian ke area tertentu dengan parameter. `fq` 

**Untuk menggunakan kotak pembatas untuk membatasi hasil ke area tertentu**

1. Tentukan garis lintang dan bujur sudut kiri atas dan kanan bawah area yang Anda minati. 

1. Gunakan `fq` parameter untuk memfilter dokumen yang cocok menggunakan koordinat kotak pembatas tersebut. Misalnya, jika Anda menyertakan `location` bidang di setiap dokumen, Anda dapat menentukan filter kotak pembatas Anda sebagai`fq=location:['nn.n,nn.n','nn.n,nn.n'] `. Dalam contoh berikut, kecocokan untuk *restoran* disaring sehingga hanya kecocokan di dalam area pusat kota Paso Robles, CA yang disertakan dalam hasil. 

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

## Menyortir Hasil berdasarkan Jarak di Amazon CloudSearch
<a name="sorting-by-distance"></a>

Anda dapat menentukan ekspresi sebagai bagian dari permintaan pencarian Anda untuk mengurutkan hasil berdasarkan jarak. CloudSearch Ekspresi Amazon mendukung `haversin` fungsi, yang menghitung jarak lingkaran besar antara dua titik pada bola menggunakan garis lintang dan bujur setiap titik. (Untuk informasi lebih lanjut, lihat [rumus Haversine](http://en.wikipedia.org/wiki/Haversine_formula).) Jarak yang dihasilkan dikembalikan dalam kilometer.

Untuk menghitung jarak antara setiap dokumen yang cocok dan pengguna, Anda meneruskan lokasi pengguna ke dalam `haversin` fungsi dan mereferensikan lokasi dokumen yang disimpan di `latlon` bidang. Anda menentukan garis lintang dan bujur pengguna dalam notasi derajat desimal dan mengakses garis lintang dan bujur yang disimpan dalam as dan. `latlon` `FIELD.latitude` `FIELD.longitude` Misalnya, `expr.distance=haversin(userlat,userlon, location.latitude,location.longitude)`. 

Untuk menggunakan ekspresi untuk mengurutkan hasil pencarian, Anda menentukan `sort` parameter.

Misalnya, kueri berikut mencari restoran dan mengurutkan hasil berdasarkan jarak dari pengguna. 

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

Perhatikan bahwa Anda harus secara eksplisit menentukan arah pengurutan, `asc` atau. `desc` 

Anda dapat menyertakan jarak yang dihitung untuk setiap dokumen dalam hasil pencarian dengan menentukan nama ekspresi dengan `return` parameter. Misalnya, `return=distance`.

Anda juga dapat menggunakan nilai jarak dalam ekspresi yang lebih kompleks untuk mempertimbangkan karakteristik lain, seperti `_score` relevansi dokumen. Dalam contoh berikut, ekspresi peringkat kedua menggunakan perhitungan dokumen `distance` dan relevansinya. `_score`

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

**Tip**  
Agar contoh kueri ini berfungsi, Anda harus [mengonfigurasi indeks Anda](configuring-index-fields.md) dengan `latlon` bidang dan memiliki `location` data dalam dokumen Anda:  

```
{
  "fields": {
    "location": "40.05830,-74.40570"
  }
}
```
Jika bidang tidak ada, Anda mungkin menerima pesan galat berikut saat melakukan pencarian:  

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

Untuk informasi selengkapnya tentang menggunakan ekspresi untuk mengurutkan hasil pencarian, lihat[Mengontrol Hasil Pencarian](controlling-search-results.md).