Pencarian dan Peringkat Hasil berdasarkan Lokasi Geografis di Amazon CloudSearch - Amazon CloudSearch

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

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.

Mencari Dalam Area di Amazon CloudSearch

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.

  2. 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 sebagaifq=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

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.) 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 Sebagai contoh, 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. Sebagai contoh, 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 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, lihatMengontrol Hasil Pencarian.