Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mendapatkan dan Menggunakan Informasi Facet di Amazon CloudSearch
Topik
Facet adalah bidang indeks yang mewakili kategori yang ingin Anda gunakan untuk menyaring dan memfilter hasil pencarian. Saat mengirimkan permintaan penelusuran ke Amazon CloudSearch, Anda dapat meminta informasi aspek untuk mengetahui berapa banyak dokumen yang memiliki nilai yang sama di bidang tertentu. Anda dapat menampilkan informasi ini bersama dengan hasil pencarian, dan menggunakannya untuk memungkinkan pengguna untuk secara interaktif menyempurnakan pencarian mereka. (Ini sering disebut sebagai navigasi segi atau pencarian segi.)
Anda bisa mendapatkan informasi aspek untuk setiap bidang yang mendukung aspek dengan menentukan facet.FIELD
parameter dalam permintaan pencarian Anda. Secara default, Amazon CloudSearch mengembalikan jumlah facet untuk 10 nilai teratas. Untuk informasi selengkapnya tentang mengaktifkan bidang untuk mengembalikan aspek, lihat. configure indexing options Untuk deskripsi facet.FIELD
parameter, lihat Parameter Permintaan Pencarian di referensi API Pencarian.
Anda dapat menentukan opsi faset untuk mengontrol pengurutan nilai faset untuk setiap bidang, membatasi jumlah nilai faset yang dikembalikan, atau memilih nilai faset apa yang akan dihitung dan dikembalikan.
Mendapatkan Informasi Facet di Amazon CloudSearch
Untuk mendapatkan informasi facet untuk bidang, Anda menggunakan facet.FIELD
parameter. FIELD
adalah nama bidang yang mendukung aspek. Anda menentukan opsi faset sebagai objek JSON. Jika objek JSON kosong (facet.FIELD={}
), jumlah faset dihitung untuk semua nilai bidang, faset diurutkan berdasarkan jumlah faset, dan 10 aspek teratas dikembalikan dalam hasil. Anda dapat meminta informasi aspek untuk beberapa bidang dalam permintaan yang sama.
Anda dapat mengambil informasi facet dengan dua cara:
sort
—Mengembalikan informasi facet diurutkan baik berdasarkan jumlah faset atau nilai facet.buckets
—Mengembalikan informasi facet untuk nilai atau rentang aspek tertentu.
Menyortir Informasi Aspet
Anda menentukan sort
opsi untuk mengontrol bagaimana informasi faset diurutkan. Ada dua opsi jenis: count
danbucket
:
-
Gunakan
count
untuk mengurutkan aspek berdasarkan jumlah faset. Misalnya,facet.year={sort:'count'}
menghitung jumlah kecocokan yang memiliki nilai tahun yang sama dan mengurutkan informasi faset dengan angka itu. -
Gunakan
bucket
untuk mengurutkan aspek dengan nilai faset. Misalnya,facet.year={sort:'bucket'}
.
Saat Anda menggunakan sort
opsi, Anda dapat menentukan size
opsi untuk mengontrol jumlah maksimum nilai faset yang dikembalikan dalam hasil. size
Opsi ini hanya valid ketika Anda menggunakan sort
opsi.
Dalam contoh berikut, informasi faset dihitung untuk genres
bidang, genre diurutkan berdasarkan nilai faset, dan 5 genre pertama dikembalikan dalam hasil:
facet.genres={sort:'bucket', size:5}
Informasi Aspek Bucketing
Anda dapat secara eksplisit menentukan nilai faset atau rentang yang ingin Anda hitung dengan menggunakan opsi. buckets
Bucket ditentukan sebagai array nilai atau rentang, misalnya,facet.color={buckets:["red","green","blue"]}
.
Untuk menentukan rentang nilai, gunakan koma (,) untuk memisahkan batas atas dan bawah dan lampirkan rentang menggunakan tanda kurung atau tanda kurung. Braket persegi, [atau], menunjukkan bahwa ikatan termasuk dalam rentang, penjepit keriting, {atau}, tidak termasuk batas. Anda dapat menghilangkan batas atas atau bawah untuk menentukan rentang terbuka. Saat menghilangkan ikatan, Anda harus menggunakan penjepit keriting. Sebagai contoh, facet.year={buckets:["[1970,1979]","[1980,1989]",
"[1990,1999]","[2000,2009]","[2010,}"]}
. Untuk stempel waktu, Anda bisa menggunakannya. q=-poet&facet.release_date={buckets:["[\'1980-01-01T00:00:00Z\',\'1986-01-01T00:00:01Z\']"]}
size
Opsi sort
dan tidak valid jika Anda menentukan ember.
Amazon CloudSearch mendukung dua metode untuk menghitung jumlah bucket, filter
daninterval
. Secara default, filter
metode ini digunakan, yang hanya mengirimkan kueri filter tambahan untuk setiap bucket untuk mendapatkan jumlah bucket. Meskipun ini berfungsi dengan baik dalam banyak kasus, jika Anda memiliki tingkat pembaruan yang tinggi atau mengambil sejumlah besar aspek, kinerja dapat terganggu karena kueri tersebut tidak dapat memanfaatkan mekanisme caching internal.
Jika Anda mengalami kinerja kueri yang lambat untuk aspek yang disetel, coba setel metode bucket, yang interval
mem-post-process set hasil daripada mengirimkan beberapa kueri:
facet.year={buckets:["[1970,1979]","[1980,1989]","[1990,1999]"],method:"interval"}
Sebaiknya lakukan pengujian kinerja Anda sendiri untuk menentukan metode mana yang terbaik untuk aplikasi Anda. Secara umum, filter
metode ini lebih cepat jika Anda memiliki tingkat pembaruan yang cukup rendah dan tidak mengambil sejumlah besar bucket. Namun, jika Anda memiliki tingkat pembaruan yang tinggi atau banyak bucket, menggunakan interval
metode ini untuk mem-post-process kumpulan hasil dapat menghasilkan kinerja kueri yang jauh lebih cepat.
Menggunakan Informasi Facet di Amazon CloudSearch
Anda dapat menampilkan informasi aspek untuk memungkinkan pengguna untuk lebih mudah menelusuri hasil pencarian dan mengidentifikasi informasi yang mereka minati. Misalnya, jika pengguna mencoba menemukan salah satu film Star Trek, tetapi tidak dapat mengingat judul lengkapnya, ia mungkin mulai dengan mencari bintang. Jika Anda ingin menampilkan aspek teratas untuk genre, Anda akan menyertakan facet.FIELD
dalam kueri, bersama dengan jumlah nilai faset yang ingin Anda ambil untuk setiap aspek:
search?q=star&facet.genres={sort:'count',size:5}&format=xml&return=_no_fields
Contoh sebelumnya memberi Anda informasi berikut dalam respons pencarian:
<results> <status rid="v7r9hs8oFQqMHnk=" time-ms="3"/> <hits found="85" start="0"> <hit id="tt1411664"/> <hit id="tt1911658"/> <hit id="tt0086190"/> <hit id="tt0120601"/> <hit id="tt2141761"/> <hit id="tt1674771"/> <hit id="tt0056687"/> <hit id="tt0397892"/> <hit id="tt0258153"/> <hit id="tt0796366"/> </hits> <facets> <facet name="genres"> <bucket value="Comedy" count="41"/><bucket value="Drama" count="35"/> <bucket value="Adventure" count="29"/> <bucket value="Sci-Fi" count="24"/> <bucket value="Action" count="20"/> </facet> </facets> </results>
Aspek Multi-Pilihan di Amazon CloudSearch
Jika Anda ingin menampilkan aspek yang tersedia dan memungkinkan pengguna memilih beberapa nilai untuk menyempurnakan hasil, Anda dapat mengirimkan satu permintaan untuk mendapatkan dokumen yang cocok dengan batasan aspek dan permintaan tambahan untuk mendapatkan jumlah faset.
Misalnya, dalam data film sampel, genres
rating
, dan year
bidang diaktifkan faset. Jika pengguna mencari istilah penyair, Anda dapat mengirimkan permintaan berikut untuk mendapatkan film yang cocok dan jumlah aspek untukgenres
,, rating
dan bidang: year
q=poet&facet.genres={}&facet.rating={}&facet.year={}&return=_no_fields
Karena tidak ada facet.FIELD
opsi yang ditentukan, Amazon CloudSearch menghitung semua nilai faset dan mengembalikan 10 nilai teratas untuk setiap aspek:
{ "status" : { "rid" : "it3T8tIoDgrUSvA=", "time-ms" : 5 }, "hits" : { "found" : 14, "start" : 0, "hit" : [ {"id" : "tt0097165"}, {"id" : "tt0059113"}, { "id" : "tt0108174"}, {"id" : "tt1067765"}, { "id" : "tt1311071"}, {"id" : "tt0810784"}, {"id" : "tt0819714"}, {"id" : "tt0203009"}, {"id" : "tt0114702"}, {"id" : "tt0107840"} ] }, "facets" : { "genres" : { "buckets" : [ {"value" : "Drama","count" : 12}, {"value" : "Romance","count" : 9}, {"value" : "Biography", "count" : 4}, {"value" : "Comedy","count" : 2}, {"value" : "Thriller","count" : 2}, {"value" : "War","count" : 2}, {"value" : "Crime","count" : 1}, {"value" : "History","count" : 1}, {"value" : "Musical","count" : 1} ] }, "rating" : { "buckets" : [ {"value" : "6.3","count" : 3}, {"value" : "6.2","count" : 2}, {"value" : "7.1","count" : 2}, {"value" : "7.9","count" : 2}, {"value" : "5.3","count" : 1}, {"value" : "6.1""count" : 1}, {"value" : "6.4","count" : 1}, {"value" : "6.9","count" : 1}, {"value" : "7.6","count" : 1} ] }, "year" : { "buckets" : [ {"value" : "2013","count" : 3}, {"value" : "1993","count" : 2}, {"value" : "1965","count" : 1}, {"value" : "1989","count" : 1}, {"value" : "1995","count" : 1}, {"value" : "2001","count" : 1}, {"value" : "2004","count" : 1}, {"value" : "2006","count" : 1}, {"value" : "2008","count" : 1}, {"value" : "2009","count" : 1} ] } } }
Saat pengguna menyempurnakan pencarian dengan memilih nilai facet, Anda menggunakan pilihan facet tersebut untuk memfilter hasil. Misalnya, jika pengguna memilih 2013, 2012, dan 1993, permintaan berikut akan merilis film yang cocok selama tahun-tahun tersebut:
q=poet&fq=(or year:2013 year:2012 year:1993)&facet.genres={}&facet.rating={} &facet.year={}&return=_no_fields
Ini mendapatkan dokumen yang cocok dengan pilihan pengguna dan faset dihitung dengan filter yang diterapkan:
{ "status" : { "rid" : "zMP38tIoDwrUSvA=", "time-ms" : 6 }, "hits" : { "found" : 6, "start" : 0, "hit" : [ {"id" : "tt0108174"}, {"id" : "tt1067765"}, {"id" : "tt1311071"}, {"id" : "tt0107840"}, {"id" : "tt1462411"}, {"id" : "tt0455323"} ] }, "facets" : { "genres" : { "buckets" : [ {"value" : "Drama","count" : 4}, {"value" : "Romance","count" : 3}, {"value" : "Comedy","count" : 2}, {"value" : "Thriller","count" : 2}, {"value" : "Biography","count" : 1}, {"value" : "Crime","count" : 1} ] }, "rating" : { "buckets" : [ {"value" : "6.3","count" : 2}, {"value" : "5.3","count" : 1}, {"value" : "6.2","count" : 1}, {"value" : "6.4","count" : 1}, {"value" : "7.1","count" : 1} ] }, "year" : { "buckets" : [ {"value" : "2013","count" : 3}, {"value" : "1993","count" : 2}, {"value" : "2012","count" : 1} ] } } }
Inilah yang ingin Anda tunjukkan untuk genre dan peringkat. Namun, untuk memungkinkan pengguna mengubah filter tahun, Anda perlu mendapatkan jumlah aspek untuk tahun yang tidak dipilih. Untuk melakukan ini, Anda mengirimkan permintaan kedua untuk mengambil jumlah faset untuk bidang tahun tanpa filter:
q=poet&facet.year={}&size=0
Tidak perlu mengambil dokumen yang cocok, jadi size
parameter disetel ke nol untuk meminimalkan latensi permintaan. Permintaan hanya mengembalikan informasi facet untuk year
bidang:
{ "status" : { "rid" : "x/7r0NIoRwqlHfo=", "time-ms" : 4 }, "hits" : { "found" : 14, "start" : 0, "hit" : [ ] }, "facets" : { "year" : { "buckets" : [ {"value" : "2013","count" : 3}, {"value" : "1993","count" : 2}, {"value" : "1965","count" : 1}, {"value" : "1989","count" : 1}, {"value" : "1995","count" : 1}, {"value" : "2001","count" : 1}, {"value" : "2004","count" : 1}, {"value" : "2006","count" : 1}, {"value" : "2008","count" : 1}, {"value" : "2009","count" : 1} ] } } }
Untuk meminimalkan waktu respons, Anda dapat mengirim permintaan ini secara paralel dengan permintaan untuk mendapatkan hasil yang difilter. Namun, perlu diingat bahwa permintaan tambahan ini dapat memengaruhi kinerja kueri Anda secara keseluruhan, dan mungkin perlu meningkatkan skala domain Anda untuk menangani lalu lintas tambahan. (Untuk informasi lebih lanjut tentang penskalaan, lihatMengkonfigurasi Opsi Penskalaan di Amazon CloudSearch.)
Jika pengguna lebih menyempurnakan pencarian dengan memilih genre atau peringkat, Anda menambahkannya ke kriteria filter untuk mendapatkan dokumen yang cocok. Misalnya, permintaan berikut mendapatkan film yang dirilis pada tahun 2013, 2012, atau 1993 yang memiliki peringkat 6,3:
q=poet&fq=(and rating:6.3 (or year:2013 year:2012 year:1993))&facet.genres={}&return=_no_fields
Mendapatkan informasi aspek untuk genre dalam permintaan ini mengembalikan jumlah aspek dengan filter peringkat dan tahun yang diterapkan:
{ "status" : { "rid" : "l66b89IoEArUSvA=", "time-ms" : 6 }, "hits" : { "found" : 2, "start" : 0, "hit" : [ {"id" : "tt1462411"}, {"id" : "tt0455323"} ] }, "facets" : { "genres" : { "buckets" : [ {"value" : "Drama","count" : 2} ] } } }
Untuk memungkinkan pengguna memilih peringkat yang berbeda, Anda mengirimkan permintaan tambahan untuk mendapatkan jumlah aspek peringkat dengan hanya filter tahun yang diterapkan:
q=poet&fq=(or year:2013 year:2012 year:1993)&facet.rating={}&size=0
Permintaan ini mendapat respons berikut:
{ "status" : { "rid" : "jqWj89IoEQrUSvA=", "time-ms" : 5 }, "hits" : { "found" : 6, "start" : 0, "hit" : [ ] }, "facets" : { "rating" : { "buckets" : [ {"value" : "6.3","count" : 2}, {"value" : "5.3","count" : 1}, {"value" : "6.2","count" : 1}, {"value" : "6.4","count" : 1}, {"value" : "7.1","count" : 1} ] } } }
Demikian pula, Anda memerlukan permintaan lain untuk mendapatkan jumlah aspek tahun dengan hanya filter peringkat yang diterapkan:
q=poet&fq=rating:6.3&facet.year={}&size=0
Permintaan ini mendapat respons berikut:
{ "status" : { "rid" : "4L6F8NIoDQrUSvA=", "time-ms" : 4 }, "hits" : { "found" : 3, "start" : 0, "hit" : [ ] }, "facets" : { "year" : { "buckets" : [ {"value" : "1995","count" : 1}, {"value" : "2012","count" : 1}, {"value" : "2013","count" : 1} ] } } }