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.
Topik
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
Tentukan garis lintang dan bujur sudut kiri atas dan kanan bawah area yang Anda minati.
Gunakan
fq
parameter untuk memfilter dokumen yang cocok menggunakan koordinat kotak pembatas tersebut. Misalnya, jika Anda menyertakanlocation
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
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.