

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

# Mencari Data Anda dengan Amazon CloudSearch
<a name="searching"></a>

Anda menentukan istilah atau nilai yang ingin Anda cari dengan `q` parameter. Cara Anda menentukan kriteria pencarian tergantung pada parser kueri mana yang Anda gunakan. Amazon CloudSearch mendukung empat parser kueri:
+ `simple`—cari semua `text` dan `text-array` bidang untuk string yang ditentukan. Parser kueri sederhana memungkinkan Anda mencari frasa, istilah individual, dan awalan. Anda dapat menetapkan persyaratan sebagai wajib atau opsional, atau mengecualikan kecocokan yang berisi istilah tertentu. Untuk mencari bidang tertentu, Anda dapat menentukan bidang yang ingin Anda cari dengan `q.options` parameter. Parser `simple` query digunakan secara default jika `q.parser` parameter tidak ditentukan. 
+ `structured`—cari bidang tertentu, buat kueri majemuk menggunakan operator Boolean, dan gunakan fitur-fitur canggih seperti penguat istilah dan pencarian kedekatan. 
+ `lucene`—tentukan kriteria pencarian menggunakan sintaks parser kueri Apache Lucene. Jika saat ini Anda menggunakan sintaks Lucene, menggunakan parser `lucene` kueri memungkinkan Anda memigrasikan layanan penelusuran ke CloudSearch domain Amazon tanpa harus menulis ulang kueri penelusuran Anda sepenuhnya dalam sintaks penelusuran terstruktur Amazon. CloudSearch 
+ `dismax`—tentukan kriteria pencarian menggunakan subset sederhana dari sintaks parser kueri Apache Lucene yang ditentukan oleh parser kueri. DisMax Jika saat ini Anda menggunakan DisMax sintaks, menggunakan parser `dismax` kueri memungkinkan Anda memigrasikan layanan penelusuran ke CloudSearch domain Amazon tanpa harus menulis ulang kueri penelusuran Anda sepenuhnya dalam sintaks penelusuran terstruktur Amazon CloudSearch . 

Anda dapat menggunakan parameter penelusuran tambahan untuk [mengontrol bagaimana hasil penelusuran dikembalikan](controlling-search-results.md) dan [menyertakan informasi tambahan](querying-for-more-info.md) seperti aspek, sorotan, dan saran dengan hasil penelusuran Anda. 

Untuk informasi tentang semua parameter CloudSearch penelusuran Amazon, lihat[Cari Referensi API](search-api.md).

**Topics**
+ [Mengirimkan Permintaan Pencarian ke Domain Amazon CloudSearch](submitting-search-requests.md)
+ [Membangun Kueri Senyawa di Amazon CloudSearch](searching-compound-queries.md)
+ [text](searching-text.md)
+ [Mencari Angka di Amazon CloudSearch](searching-numbers.md)
+ [Mencari Tanggal dan Waktu di Amazon CloudSearch](searching-dates.md)
+ [Mencari Rentang Nilai di Amazon CloudSearch](searching-ranges.md)
+ [location-based searching and sorting](searching-locations.md)
+ [Mencari Data DynamoDB dengan Amazon CloudSearch](searching-dynamodb-data.md)
+ [Memfilter Dokumen Pencocokan di Amazon CloudSearch](filtering-results.md)
+ [Menyetel Kinerja Permintaan Pencarian di Amazon CloudSearch](tuning-search.md)

# Mengirimkan Permintaan Pencarian ke Domain Amazon CloudSearch
<a name="submitting-search-requests"></a>

Sebaiknya gunakan salah satu AWS SDKs atau AWS CLI untuk mengirimkan permintaan pencarian. AWS CLI Menangani SDKs dan menangani penandatanganan permintaan untuk Anda dan menyediakan cara mudah untuk melakukan semua CloudSearch tindakan Amazon. Anda juga dapat menggunakan Penguji Penelusuran di CloudSearch konsol Amazon untuk mencari data, menelusuri hasilnya, dan melihat permintaan yang dihasilkan serta respons JSON URLs dan XHTML. Untuk informasi selengkapnya, lihat [Mencari dengan Search Tester](getting-started-search.md#searching-console).

**penting**  
Titik akhir pencarian tidak berubah: Dokumen domain dan titik akhir pencarian tetap sama selama masa pakai domain. Anda harus men-cache titik akhir daripada mengambilnya sebelum setiap permintaan unggahan atau pencarian. Menanyakan layanan CloudSearch konfigurasi Amazon dengan menelepon `aws cloudsearch describe-domains` atau `DescribeDomains` sebelum setiap permintaan kemungkinan akan mengakibatkan permintaan Anda dibatasi.
Alamat IP **memang** berubah: Alamat IP domain Anda *dapat* berubah seiring waktu, jadi penting untuk men-cache titik akhir seperti yang ditunjukkan di konsol dan dikembalikan oleh `aws cloudsearch describe-domains` perintah daripada alamat IP. Anda juga harus menyelesaikan kembali DNS endpoint ke alamat IP secara teratur. Untuk informasi selengkapnya, lihat [Mengatur TTL JVM untuk Pencarian Nama DNS](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-jvm-ttl.html).

Misalnya, permintaan berikut mengirimkan pencarian teks sederhana untuk `wolverine` menggunakan AWS CLI dan mengembalikan hanya dokumen IDs yang cocok.

```
aws cloudsearchdomain --endpoint-url http://search-movies-y6gelr4lv3jeu4rvoelunxsl2e.us-east-1.cloudsearch.amazonaws.com search --search-query wolverine  --return _no_fields
{
    "status": {
        "rid": "/rnE+e4oCAqfEEs=", 
        "time-ms": 6
    }, 
    "hits": {
        "found": 3, 
        "hit": [
            {
                "id": "tt1430132"
            }, 
            {
                "id": "tt0458525"
            }, 
            {
                "id": "tt1877832"
            }
        ], 
        "start": 0
    }
}
```

Secara default, Amazon CloudSearch mengembalikan respons di JSON. Anda bisa mendapatkan hasil yang diformat dalam XMLdengan menentukan parameter. `format` Menyetel format respons hanya memengaruhi respons terhadap permintaan yang berhasil. Format respons kesalahan tergantung pada asal kesalahan. Kesalahan yang dikembalikan oleh layanan pencarian selalu dikembalikan di JSON. Kesalahan 5xx karena batas waktu server dan masalah perutean permintaan lainnya dikembalikan dalam XHTML.

**catatan**  
AWS SDKs mengembalikan bidang sebagai array. Bidang nilai tunggal dikembalikan sebagai array dengan satu elemen, seperti:  

```
"fields": {
  "plot": ["Katniss Everdeen reluctantly becomes the symbol of a mass rebellion against the autocratic Capitol."]
}
```

Untuk tujuan pengembangan dan pengujian, Anda dapat mengizinkan akses anonim ke layanan pencarian domain Anda dan mengirimkan permintaan HTTP GET atau POST yang tidak ditandatangani langsung ke titik akhir pencarian domain Anda. Dalam lingkungan produksi, batasi akses ke domain Anda ke peran, grup, atau pengguna IAM tertentu dan kirimkan permintaan yang ditandatangani menggunakan SDKs AWS atau. AWS CLI Untuk informasi tentang mengontrol akses untuk Amazon CloudSearch, lihat[Mengkonfigurasi Akses untuk Amazon CloudSearch](configuring-access.md). Untuk informasi selengkapnya tentang penandatanganan permintaan, lihat [Menandatangani Permintaan AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html). 

Anda dapat menggunakan metode apa pun yang ingin Anda kirim permintaan HTTP langsung ke titik akhir pencarian domain Anda—Anda dapat memasukkan URL permintaan secara langsung di browser Web, menggunakan cURL untuk mengirimkan permintaan, atau membuat panggilan HTTP menggunakan pustaka HTTP favorit Anda. Untuk menentukan kriteria penelusuran, Anda menentukan string kueri yang menentukan batasan untuk pencarian Anda dan apa yang ingin Anda dapatkan kembali dalam respons. String kueri harus dikodekan URL. Ukuran maksimum permintaan pencarian yang dikirimkan melalui GET adalah 8190 byte, termasuk metode HTTP, URI, dan versi protokol. Anda dapat mengirimkan permintaan yang lebih besar menggunakan HTTP POST; Namun, perlu diingat bahwa permintaan yang besar dan kompleks membutuhkan waktu lebih lama untuk diproses dan lebih mungkin untuk habis waktu. Untuk informasi selengkapnya, lihat [Menyetel Kinerja Permintaan Pencarian di Amazon CloudSearch](tuning-search.md).

Misalnya, permintaan berikut mengirimkan kueri terstruktur ke `search-movies-rr2f34ofg56xneuemujamut52i.us-east-1.cloudsearch.amazonaws.com` domain dan mendapatkan isi `title` bidang.

```
http://search-movies-rr2f34ofg56xneuemujamut52i.us-east-1.cloudsearch.
amazonaws.com/2013-01-01/search?q=(and+(term+field%3Dtitle+'star')
(term+field%3Dyear+1977))&q.parser=structured&return=title
```

**penting**  
Karakter khusus dalam string kueri harus dikodekan URL. Misalnya, Anda harus menyandikan `=` operator dalam kueri terstruktur sebagai`%3D`:`(term+field%3Dtitle+'star')`. Jika Anda tidak menyandikan karakter khusus saat mengirimkan permintaan pencarian, Anda akan mendapatkan `InvalidQueryString` kesalahan.

# Mencari dengan Search Tester
<a name="search-tester"></a>

Penguji penelusuran di CloudSearch konsol Amazon memungkinkan Anda mengirimkan contoh permintaan penelusuran menggunakan salah satu parser kueri yang didukung: sederhana, terstruktur, lucene, atau dismax. Secara default, permintaan diproses dengan parser kueri sederhana. Anda dapat menentukan opsi untuk parser yang dipilih, memfilter dan mengurutkan hasil, dan menelusuri aspek yang dikonfigurasi. Hit pencarian secara otomatis disorot dalam hasil pencarian. Untuk informasi tentang bagaimana hal ini dilakukan, lihat[Menyoroti Pencarian Hits di Amazon CloudSearch](highlighting.md). Anda juga dapat memilih pemberi saran untuk mendapatkan saran saat memasukkan istilah di bidang **Pencarian**. (Anda harus mengonfigurasi sugester sebelum Anda bisa mendapatkan saran. Untuk informasi lebih lanjut lihat[Mendapatkan Saran Pelengkapan Otomatis di Amazon CloudSearch](getting-suggestions.md).)

*Secara default, hasil diurutkan menurut skor relevansi yang dihasilkan secara otomatis, \$1score.* Untuk informasi tentang menyesuaikan bagaimana hasil diberi peringkat, lihat[Menyortir Hasil di Amazon CloudSearch](sorting-results.md).



**Untuk mencari domain Anda**

1. Pergi ke CloudSearch konsol Amazon di [https://console.aws.amazon.com/cloudsearch/rumah](https://console.aws.amazon.com/cloudsearch/home).

1. Di panel navigasi kiri, pilih nama domain Anda untuk membuka konfigurasinya.

1. Pilih **Jalankan pencarian pengujian**.

1. Untuk melakukan pencarian teks sederhana, masukkan kueri penelusuran dan pilih **Jalankan**. Secara default, semua `text` dan `text-array` bidang dicari. 

Untuk mencari bidang tertentu, perluas **Opsi** dan masukkan daftar bidang yang dipisahkan koma yang ingin Anda cari di bidang bidang **Penelusuran**. Anda dapat menambahkan bobot ke setiap bidang dengan tanda sisipan (^) untuk mengontrol kepentingan relatif setiap bidang dalam hasil pencarian. Misalnya, menentukan hit `title^5, description` bobot di `title` lapangan lima kali lebih banyak daripada hit di `description` lapangan saat menghitung skor relevansi untuk setiap dokumen yang cocok.

Untuk menggunakan sintaks kueri terstruktur, pilih **Structured** dari menu **Query parser**. Setelah Anda memilih parser kueri terstruktur, masukkan kueri terstruktur Anda di bidang **Penelusuran** dan pilih **Jalankan**. Misalnya, untuk menemukan semua film dengan *bintang* dalam judul yang dirilis pada tahun 2000 atau sebelumnya, Anda dapat memasukkan:`(and title:'star' year:{,2000])`. Untuk informasi selengkapnya, lihat [Membangun Kueri Senyawa](searching-compound-queries.md). Untuk mengirimkan Lucene atau DisMax kueri, pilih parser kueri yang sesuai.

Anda dapat menentukan opsi tambahan untuk parser kueri yang dipilih untuk mengonfigurasi operator default dan mengontrol operator mana yang dapat digunakan dalam kueri. Untuk informasi selengkapnya, lihat [Parameter Permintaan Pencarian](search-api.md#search-request-parameters).

Anda dapat menyalin dan menempelkan URL permintaan untuk mengirimkan permintaan dan melihat respons dari browser Web. Permintaan dapat dikirim melalui HTTP atau HTTPS.

# Membangun Kueri Senyawa di Amazon CloudSearch
<a name="searching-compound-queries"></a>

Anda dapat menggunakan parser kueri terstruktur untuk menggabungkan ekspresi kecocokan menggunakan Boolean`and`,`or`, dan `not` operator. Untuk memilih parser kueri terstruktur, Anda menyertakan `q.parser=structured` dalam kueri Anda. Operator kueri terstruktur ditentukan sebagai operator *awalan*. Sintaksnya adalah:
+ `(and boost=N EXPRESSION1 EXPRESSION2 ... EXPRESSIONn)`
+ `(or boost=N EXPRESSION1 EXPRESSION2 ... EXPRESSIONn)`
+ `(not boost=N EXPRESSION)`

Misalnya, kueri berikut cocok dengan semua film dalam kumpulan data sampel yang berisi *bintang* dalam judul, dan Harrison Ford atau William Shatner muncul di `actors` lapangan, tetapi Zachary Quinto tidak.

```
(and title:'star' (or actors:'Harrison Ford' actors:'William Shatner')(not actors:'Zachary Quinto'))
```

Saat menggunakan operator kueri terstruktur, Anda menentukan nama operator, opsi untuk operator, dan kemudian ekspresi kecocokan yang dioperasikan,`(OPERATOR OPTIONS EXPRESSION)`. Ekspresi pencocokan dapat berupa string teks sederhana, atau subklausa dari kueri gabungan Anda. Opsi apa pun harus ditentukan sebelum persyaratan. Misalnya, `(and (not field=genres 'Sci-Fi')(or (term field=title boost=2 'star')(term field=plot 'star')))`.

Tanda kurung mengontrol urutan evaluasi ekspresi. Ketika ekspresi diapit dalam tanda kurung, ekspresi itu dievaluasi terlebih dahulu, dan kemudian nilai yang dihasilkan digunakan dalam evaluasi sisa kueri majemuk. 

**penting**  
Anda harus mengkodekan URL karakter khusus dalam string kueri. Misalnya, Anda harus menyandikan `=` operator dalam kueri terstruktur sebagai`%3D`:`(term+field%3Dtitle+'star'`). Amazon CloudSearch mengembalikan `InvalidQueryString` kesalahan jika karakter khusus tidak dikodekan URL. [Untuk referensi lengkap pengkodean URL, lihat Referensi Pengkodean URL HTML W3C.](http://www.w3schools.com/tags/ref_urlencode.asp)

Misalnya, kueri berikut mencari `title` bidang untuk frasa `star wars` dan mengecualikan kecocokan yang memiliki nilai kurang dari 2000 di bidang tersebut`year`. 

```
(and (phrase field='title' 'star wars') (not (range field=year {,2000})))
```

Untuk mengirimkan permintaan pencarian ini, Anda perlu menyandikan string kueri dan menentukan parser `structured` kueri dengan parameter. `q.parser`

```
http://search-movies-rr2f34ofg56xneuemujamut52i.us-east-1.cloudsearch.
amazonaws.com/2013-01-01/search?q=(and+(phrase+field='title'+'star wars')+(not+(range+field%3Dyear+{,2000})))&q.parser=structured
```

Sintaks kueri terstruktur memungkinkan Anda untuk menggabungkan pencarian terhadap beberapa bidang. Jika Anda tidak menentukan bidang yang akan dicari, semua `text` dan `text-array` bidang akan dicari. Misalnya, kueri berikut akan mencari semua `text` dan `text-array` bidang untuk istilah *bintang*, dan tidak termasuk dokumen yang berisi *Zachary* Quinto di bidang. `actors`

```
(and 'star' (not actors:'Zachary Quinto'))
```

Anda dapat menentukan `boost` nilai untuk meningkatkan pentingnya satu ekspresi dalam kueri majemuk dalam kaitannya dengan yang lain. Nilai boost meningkatkan skor dokumen yang cocok. Misalnya, kueri berikut meningkatkan kecocokan untuk istilah *bintang* jika terjadi di `title` bidang, bukan di `description` bidang.

```
(and (range field=year [2013,}) (or (term field=title boost=2 'star') (term field=plot 'star')) 
```

Nilai boost harus lebih besar dari nol.

Selain`and`,, dan `or``not`, sintaks pencarian CloudSearch terstruktur Amazon mendukung beberapa operator khusus:
+ `matchall`—Cocokkan setiap dokumen di domain. Sintaks:`matchall`.
+ `near`—Mendukung kueri frase ceroboh. `distance`Nilai menentukan jumlah maksimum kata yang dapat memisahkan kata-kata dalam frasa; misalnya,`(near field='plot' distance=4 'naval mutiny demonstration')`. Gunakan `near` operator untuk mengaktifkan pencocokan ketika istilah yang ditentukan berada dalam jarak dekat, tetapi tidak berdekatan. Untuk informasi selengkapnya tentang pencarian frase ceroboh, lihat. [Mencari Frase](searching-text.md#searching-text-phrases) Sintaks:`(near field=FIELD distance=N boost=N 'STRING')`.
+ `phrase`—Mencari frasa di `text` atau `text-array` bidang; misalnya,. `(phrase field="title" 'teenage mutant ninja')` Mendukung peningkatan dokumen yang cocok dengan ekspresi. Untuk informasi selengkapnya tentang penelusuran frasa, lihat[Mencari Frase](searching-text.md#searching-text-phrases). Sintaks:`(phrase field=FIELD boost=N 'STRING')`.
+ `prefix`—Mencari bidang teks, teks-array, literal, atau literal-array untuk awalan yang ditentukan diikuti oleh nol atau lebih karakter; misalnya,. `(prefix field='title' 'wait')` Mendukung peningkatan dokumen yang cocok dengan ekspresi. Untuk informasi selengkapnya tentang penelusuran awalan, lihat [Mencari Prefiks](searching-text.md#searching-text-prefixes) .Syntax:. `(prefix field=FIELD boost=N 'STRING')`
+ `range`—Mencari rentang nilai dalam bidang numerik; misalnya:. `(range field=year [2000,2013])` Untuk informasi selengkapnya tentang penelusuran rentang, lihat[Mencari Rentang Nilai](searching-ranges.md). Sintaks:`(range field=FIELD boost=N RANGE)`.
+ `term`—Mencari istilah atau nilai individu di bidang apa pun; misalnya:. `(and (term field=title 'star')(term field=year 1977))` Sintaks:`(term field=FIELD boost=N 'STRING'|VALUE)`.

Untuk informasi selengkapnya tentang mencari jenis data tertentu, lihat bagian berikut. Untuk informasi selengkapnya tentang sintaks penelusuran terstruktur, lihat[Sintaks Pencarian Terstruktur](search-api.md#structured-search-syntax). 

# Mencari Teks di Amazon CloudSearch
<a name="searching-text"></a>

Anda dapat mencari bidang teks dan literal untuk string teks: 
+ `Text`dan `text-array` bidang selalu dapat dicari. Anda dapat mencari istilah dan frasa individual. Pencarian di dalam `text` dan `text-array` bidang tidak peka huruf besar/kecil.
+ `Literal`dan `literal-array` bidang hanya dapat dicari jika pencarian diaktifkan di opsi pengindeksan domain. Anda dapat mencari kecocokan yang tepat dari string pencarian Anda. Pencarian di bidang literal peka huruf besar/kecil.

Jika Anda menggunakan parser kueri sederhana atau tidak menentukan bidang saat mencari dengan parser kueri terstruktur, secara default semua `text` dan `text-array` bidang dicari. Bidang literal *tidak* dicari secara default. Anda dapat menentukan bidang mana yang ingin Anda cari dengan `q.options` parameter. 

Anda dapat mencari bidang ID dokumen unik seperti bidang teks apa pun. Untuk mereferensikan bidang ID dokumen dalam permintaan pencarian, Anda menggunakan nama bidang`_id`. Dokumen IDs selalu dikembalikan dalam hasil pencarian. 

**Topics**
+ [Mencari Istilah Individu di Amazon CloudSearch](#searching-text-terms)
+ [Mencari Frasa di Amazon CloudSearch](#searching-text-phrases)
+ [Mencari String Literal di Amazon CloudSearch](#searching-text-literals)
+ [Mencari Awalan di Amazon CloudSearch](#searching-text-prefixes)

## Mencari Istilah Individu di Amazon CloudSearch
<a name="searching-text-terms"></a>

Saat Anda mencari `text` dan `text-array` bidang untuk istilah individual, Amazon CloudSearch menemukan semua dokumen yang berisi istilah pencarian di mana saja dalam bidang yang ditentukan, dalam urutan apa pun. Misalnya, dalam data film sampel, `title` bidang dikonfigurasi sebagai `text` bidang. Jika Anda mencari `title` bidang untuk *bintang*, Anda akan menemukan semua film yang berisi *bintang* di mana saja di `title` lapangan, seperti *bintang**, perang bintang*, dan *bintang lahir*. Ini berbeda dari `literal` bidang pencarian, di mana nilai bidang harus identik dengan string pencarian untuk dianggap cocok. 

Parser `simple` kueri menyediakan cara mudah untuk mencari `text` dan `text-array` bidang untuk satu atau lebih istilah. Parser `simple` kueri digunakan secara default kecuali Anda menggunakan `q.parser` parameter untuk menentukan parser kueri yang berbeda. 

Misalnya, untuk mencari *katniss*, tentukan `katniss` dalam string kueri. Secara default, Amazon CloudSearch menyertakan semua bidang yang diaktifkan kembali dalam hasil pencarian. Anda dapat menentukan `return` parameter untuk menentukan bidang mana yang ingin Anda kembalikan.

```
https://search-domainname-domainid.us-east-1.cloudsearch.amazonaws.com/
2013-01-01/search?q=katniss&return=title
```

Secara default, respons dikembalikan di JSON:

```
{
    "status": {
        "rid": "rd+5+r0oMAo6swY=",
        "time-ms": 9
    },
    "hits": {
        "found": 3,
        "start": 0,
        "hit": [
            {
                "id": "tt1951265",
                "fields": {
                    "title": "The Hunger Games: Mockingjay - Part 1"
                }
            },
            {
                "id": "tt1951264",
                "fields": {
                    "title": "The Hunger Games: Catching Fire"
                }
            },
            {
                "id": "tt1392170",
                "fields": {
                    "title": "The Hunger Games"
                }
            }
        ]
    }
}
```

Untuk menentukan beberapa istilah, pisahkan istilah dengan spasi. Sebagai contoh: `star wars`. Saat Anda menentukan beberapa istilah penelusuran, secara default dokumen harus berisi semua istilah yang akan dianggap cocok. Istilah dapat terjadi di mana saja dalam bidang teks, dalam urutan apa pun. 

Secara default, semua `text` dan `text-array` bidang dicari saat Anda menggunakan parser kueri sederhana. Anda dapat menentukan bidang mana yang ingin Anda cari dengan menentukan `q.options` parameter. Misalnya, kueri ini membatasi pencarian ke `description` bidang `title` dan dan meningkatkan pentingnya kecocokan di bidang dibandingkan kecocokan di `title` bidang. `description`

```
q=star wars&q.options={fields: ['title^5','description']}
```

Bila Anda menggunakan parser kueri sederhana, Anda dapat menggunakan awalan berikut untuk menunjuk istilah individual seperti yang diperlukan, opsional, atau untuk dikecualikan dari hasil pencarian: 
+ **`+`**—dokumen yang cocok harus berisi istilah. Ini adalah default—memisahkan istilah dengan spasi sama dengan mendahuluinya dengan awalan. `+`
+ **`-`**— kecualikan dokumen yang berisi istilah dari hasil pencarian. `-`Operator hanya berlaku untuk persyaratan individual. Misalnya, untuk mengecualikan dokumen yang berisi istilah *bintang* di bidang pencarian default, tentukan:`-star`. Mencari `search?q=-star wars` mengambil semua dokumen yang tidak mengandung istilah *bintang*, tetapi mengandung istilah *perang*. 
+ **`|`**— termasuk dokumen yang berisi istilah dalam hasil pencarian, bahkan jika mereka tidak mengandung istilah lain. `|`Operator hanya berlaku untuk persyaratan individual. Misalnya, untuk menyertakan dokumen yang berisi salah satu dari dua istilah, tentukan:`term1 |term2`. Pencarian `search?q=star wars |trek` termasuk dokumen yang berisi *bintang* dan *perang*, atau istilah *perjalanan*.

Awalan ini hanya berlaku untuk istilah individual dalam kueri sederhana. Untuk membuat kueri majemuk, Anda perlu menggunakan parser kueri terstruktur, bukan parser kueri sederhana. Misalnya, untuk mencari istilah *star* dan *wars* menggunakan parser kueri terstruktur, Anda akan menentukan:

```
(and 'star' 'wars')
```

Perhatikan bahwa kueri ini cocok dengan dokumen yang berisi setiap istilah di salah satu bidang yang dicari. Persyaratan tidak harus berada di bidang yang sama untuk dianggap cocok. Namun, jika Anda menentukan`(and 'star wars' 'luke')`, *bintang* dan *perang* harus terjadi dalam bidang yang sama, dan *luke* dapat terjadi di salah satu bidang.

Jika Anda tidak menentukan bidang apa pun saat menggunakan parser `structured` kueri, semua `text` dan `text-array` bidang dicari secara default, sama seperti dengan parser. `simple` Demikian pula, Anda dapat menggunakan `q.options` parameter untuk mengontrol bidang mana yang dicari dan untuk meningkatkan pentingnya bidang yang dipilih. Untuk informasi selengkapnya, lihat [Membangun Kueri Senyawa](searching-compound-queries.md).

Anda juga dapat melakukan pencarian *fuzzy* dengan parser kueri sederhana. Untuk melakukan pencarian fuzzy, tambahkan `~` operator dan nilai yang menunjukkan berapa banyak istilah dapat berbeda dari string kueri pengguna dan masih dianggap cocok. *Misalnya, `planit~1` penelusuran yang menentukan untuk istilah *planit* dan memungkinkan kecocokan berbeda hingga satu karakter, yang berarti hasilnya akan mencakup hit untuk planet.*

## Mencari Frasa di Amazon CloudSearch
<a name="searching-text-phrases"></a>

Saat Anda mencari frasa, Amazon CloudSearch menemukan semua dokumen yang berisi frasa lengkap dalam urutan yang ditentukan. Anda juga dapat melakukan pencarian frase *ceroboh* di mana istilah muncul dalam jarak yang ditentukan satu sama lain.

Untuk mencocokkan frasa lengkap daripada istilah individual dalam frasa saat Anda mencari dengan parser kueri sederhana, lampirkan frasa dalam tanda kueri ganda. Misalnya, kueri berikut mencari frasa *dengan cinta*.

```
q="with love"
```

Untuk melakukan pencarian frase ceroboh dengan parser kueri sederhana, tambahkan `~` operator dan nilai jarak. Nilai jarak menentukan jumlah maksimum kata yang dapat memisahkan kata-kata dalam frasa. Misalnya, kueri berikut mencari istilah *dengan cinta* dalam tiga kata satu sama lain. 

```
q="with love"~3
```

Dalam kueri gabungan, Anda menggunakan `phrase` operator untuk menentukan frasa yang ingin Anda cocokkan; misalnya:

```
(phrase field=title 'star wars')
```

Untuk melakukan pencarian frase ceroboh dalam kueri majemuk, Anda menggunakan `near` operator. `near`Operator memungkinkan Anda untuk menentukan frasa yang Anda cari dan seberapa jauh jarak istilah dapat berada dalam bidang dan masih dianggap cocok. Misalnya, kueri berikut cocok dengan dokumen yang memiliki istilah *bintang* dan *perang* tidak lebih dari tiga kata terpisah di `title` lapangan.

```
(near field=title distance=3 'star wars')
```

Untuk informasi selengkapnya, lihat [Membangun Kueri Senyawa](searching-compound-queries.md).

## Mencari String Literal di Amazon CloudSearch
<a name="searching-text-literals"></a>

Saat Anda mencari bidang literal untuk string, Amazon hanya CloudSearch mengembalikan dokumen yang berisi kecocokan persis untuk string pencarian lengkap di bidang yang ditentukan, termasuk kasus. Misalnya, jika `title` bidang dikonfigurasi sebagai bidang literal dan Anda mencari *Bintang*, nilai `title` bidang harus *Bintang* untuk dianggap cocok— *bintang*, *perang bintang*, dan *bintang lahir* tidak akan disertakan dalam hasil pencarian. Ini berbeda dari bidang teks, di mana pencarian tidak peka huruf besar/kecil dan istilah pencarian yang ditentukan dapat muncul di mana saja dalam bidang dalam urutan apa pun.

Untuk mencari bidang literal, awali string pencarian dengan nama bidang literal yang ingin Anda cari, diikuti dengan titik dua. String pencarian harus dilampirkan dalam tanda kutip tunggal. Misalnya, kueri berikut mencari string literal *Sci-Fi*.

```
genres:'Sci-Fi'
```

Contoh ini mencari bidang genre dari setiap dokumen dan mencocokkan semua dokumen yang bidang genrenya berisi nilai *Sci-Fi*. Untuk menjadi kecocokan, nilai bidang harus sama persis untuk string pencarian, termasuk kasus. Misalnya, dokumen yang berisi nilai *Sci-Fi* di bidang genre tidak akan disertakan dalam hasil pencarian jika Anda mencari *sci-fi atau sci-fi* *dewasa muda*.

Dalam kueri majemuk, Anda menggunakan sintaks `term` operator untuk mencari bidang literal. Misalnya, `(term field=genres 'Sci-Fi')`. Untuk informasi selengkapnya, lihat [Membangun Kueri Senyawa](searching-compound-queries.md).

Anda dapat menggunakan bidang literal bersama dengan faset untuk memungkinkan pengguna menelusuri hasil sesuai dengan atribut faset. Untuk informasi lebih lanjut tentang faceting, lihat[Mendapatkan dan Menggunakan Informasi Facet di Amazon CloudSearch](faceting.md).

## Mencari Awalan di Amazon CloudSearch
<a name="searching-text-prefixes"></a>

Anda dapat mencari `text``text-array`,`literal`,, dan `literal-array` bidang untuk *awalan* daripada istilah lengkap. Ini cocok dengan hasil yang berisi awalan diikuti oleh nol atau lebih karakter. Anda harus menentukan setidaknya satu karakter sebagai awalan. (Untuk mencocokkan semua dokumen, gunakan `matchall` operator dalam kueri terstruktur.) Secara umum, Anda harus menggunakan awalan yang berisi setidaknya dua karakter untuk menghindari pencocokan jumlah dokumen yang berlebihan.

Saat Anda mencari `text-array` bidang `text` atau, istilah yang cocok dengan awalan dapat muncul di mana saja di dalam konten bidang. Saat Anda mencari bidang literal, seluruh string pencarian, hingga dan termasuk karakter awalan, harus sama persis. 
+ Parser kueri sederhana—gunakan operator wildcard `*` (tanda bintang) untuk mencari awalan, misalnya. `pre*`
+ Parser kueri terstruktur—gunakan `prefix` operator untuk mencari awalan, misalnya `prefix 'pre'` 

Misalnya, kueri berikut mencari awalan *oce* di bidang judul dan mengembalikan judul setiap hit:

```
q=oce*&q.options={fields:['title']}&return=title
```

Jika Anda melakukan pencarian ini terhadap data sampel film, itu kembali sebagai *Ocean's Eleven dan Ocean's* *Twelve:* 

```
{

    "status": {
        "rid": "hIbIxb8oRAo6swY=",
        "time-ms": 2
    },
    "hits": {
        "found": 2,
        "start": 0,
        "hit": [
            {
                "id": "tt0240772",
                "fields": {
                    "title": "Ocean's Eleven"
                }
            },
            {
                "id": "tt0349903",
                "fields": {
                    "title": "Ocean's Twelve"
                }
            }
        ]
    }

}
```

Dalam kueri majemuk, Anda menggunakan `prefix` operator untuk mencari awalan. Misalnya, untuk mencari `title` bidang untuk awalan *oce*, Anda menentukan:

```
q.parser=structured&q=(prefix field%3Dtitle 'oce')
```

Perhatikan pengkodean URL. Untuk informasi selengkapnya, lihat [Membangun Kueri Senyawa](searching-compound-queries.md).

**catatan**  
Saat melakukan pencarian wildcard pada bidang teks, ingatlah bahwa Amazon CloudSearch memberi token pada bidang teks selama pengindeksan dan melakukan stemming sesuai dengan skema analisis yang dikonfigurasi untuk bidang tersebut. Biasanya, Amazon CloudSearch melakukan pemrosesan teks yang sama pada permintaan pencarian. Namun, saat Anda mencari awalan dengan operator wildcard (\$1) atau `prefix` operator, tidak ada stemming yang dilakukan pada awalan. Ini berarti bahwa pencarian awalan yang berakhir tidak `s` akan cocok dengan versi tunggal dari istilah tersebut. Ini bisa terjadi untuk istilah apa pun yang berakhir`s`, bukan hanya bentuk jamak. Misalnya, jika Anda mencari `actor` bidang dalam data film sampel`Anders`, ada tiga film yang cocok. Jika Anda mencari`Ander*`, Anda mendapatkan film-film itu serta beberapa lainnya. Namun, jika Anda mencari tidak `Anders*` ada kecocokan. Ini karena istilah disimpan dalam indeks sebagai`ander`, `anders` tidak muncul dalam indeks. Untuk informasi selengkapnya tentang cara Amazon CloudSearch memproses teks dan bagaimana hal itu dapat memengaruhi penelusuran, lihat[Pemrosesan Teks di Amazon CloudSearch](text-processing.md).

# Mencari Angka di Amazon CloudSearch
<a name="searching-numbers"></a>

Anda dapat menggunakan kueri terstruktur untuk mencari bidang numerik yang diaktifkan pencarian untuk nilai atau [rentang nilai](searching-ranges.md) tertentu. Amazon CloudSearch mendukung empat jenis bidang numerik:`double`,, `double-array``int`, dan`int-array`. Untuk informasi selengkapnya, lihat [Mengkonfigurasi Bidang Indeks](configuring-index-fields.md).

Sintaks dasar untuk mencari bidang untuk satu nilai adalah**FIELD**:**VALUE**. Misalnya, `year:2010` mencari data film sampel untuk film yang dirilis pada tahun 2010.

Anda harus menggunakan parser kueri terstruktur untuk menggunakan sintaks bidang. Perhatikan bahwa nilai numerik *tidak* terlampir dalam tanda kutip — tanda kutip menunjuk nilai sebagai string. Untuk mencari rentang nilai, gunakan koma (,) untuk memisahkan batas atas dan bawah, dan lampirkan rentang menggunakan tanda kurung atau tanda kurung. Untuk informasi selengkapnya, lihat [Mencari Rentang Nilai](searching-ranges.md). 

Dalam kueri majemuk, Anda menggunakan sintaks `term` operator untuk mencari nilai tunggal:`(term field=year 2010)`.

# Mencari Tanggal dan Waktu di Amazon CloudSearch
<a name="searching-dates"></a>

Anda dapat menggunakan kueri terstruktur untuk mencari kolom tanggal yang diaktifkan penelusuran untuk tanggal dan waktu tertentu atau rentang [tanggal-waktu](searching-ranges.md). Amazon CloudSearch mendukung dua jenis bidang tanggal, `date` dan`date-array`. Untuk informasi selengkapnya, lihat [Mengkonfigurasi Bidang Indeks](configuring-index-fields.md).

 Tanggal dan waktu ditentukan dalam UTC (Coordinated Universal Time) menurut [ RFC3339IETF](http://tools.ietf.org/html/rfc3339):. `yyyy-mm-ddTHH:mm:ss.SSSZ` Di UTC, misalnya, 17:00 23 Agustus 1970 adalah:. `1970-08-23T17:00:00Z` Perhatikan bahwa Anda juga dapat menentukan detik pecahan saat menentukan waktu di UTC. Sebagai contoh, `1967-01-31T23:20:50.650Z.`. 

Untuk mencari tanggal (atau waktu) di `date` bidang, Anda harus melampirkan string tanggal dalam tanda kutip tunggal. Misalnya, kedua kueri berikut mencari data film untuk semua film yang dirilis pada tengah malam pada tanggal 25 Desember 2001:

```
q.parser=structured&q=release_date:'2001-12-25T00:00:00Z'
q.parser=structured&q=(term field%3Drelease_date '2001-12-25T00:00:00Z')
```

Untuk mencari sepanjang hari, lihat[Mencari Rentang Tanggal](searching-ranges.md#searching-ranges-dates).

# Mencari Rentang Nilai di Amazon CloudSearch
<a name="searching-ranges"></a>

Anda dapat menggunakan kueri terstruktur untuk mencari bidang untuk rentang nilai. Untuk menentukan rentang nilai, gunakan koma (,) untuk memisahkan batas atas dan bawah dan lampirkan rentang menggunakan tanda kurung atau tanda kurung. Penjepit persegi, [atau], menunjukkan bahwa ikatan termasuk dalam rentang, penjepit keriting, \$1atau\$1, tidak termasuk batas. 

Misalnya, untuk mencari kumpulan data sampel untuk film yang dirilis dari 2008 hingga 2010 (inklusif), tentukan rentang sebagai`[2008,2010]`.

Untuk menentukan rentang ujung terbuka, hilangkan batas. Misalnya, `year:[2002,}` mencocokkan semua film yang dirilis dari tahun 2002 dan seterusnya, dan `year:{,1970]` cocok dengan semua film yang dirilis hingga tahun 1970. Ketika Anda menghilangkan ikatan, Anda harus menggunakan penjepit keriting.

Dalam kueri gabungan, Anda menggunakan sintaks `range` operator untuk mencari berbagai nilai; misalnya:`(range field=year [1967,})`.

## Mencari Rentang Tanggal
<a name="searching-ranges-dates"></a>

Untuk mencari rentang tanggal (atau waktu) di `date` bidang, Anda menggunakan sintaks rentang kurung yang sama yang Anda gunakan untuk nilai numerik, tetapi Anda harus melampirkan string tanggal dalam tanda kutip tunggal. Misalnya, permintaan berikut mencari data film untuk semua film dengan tanggal rilis 1 Januari 2013 atau lebih baru:

```
q.parser=structured&q=release_date:['2013-01-01T00:00:00Z',}
```

Gunakan sintaks berikut untuk mencari rentang tetap:

```
q.parser=structured&q=release_date:['2013-01-01T00:00:00Z','2013-01-02T23:59:59Z']
```

## Mencari Rentang Lokasi
<a name="searching-ranges-locations"></a>

Anda dapat melakukan pencarian kotak pembatas dengan mencari berbagai lokasi. Untuk mencari rentang lokasi di `latlon` bidang, Anda menggunakan sintaks rentang kurung yang sama yang Anda gunakan untuk nilai numerik, tetapi Anda harus menyertakan pasangan garis lintang/bujur dalam tanda kutip tunggal. 

Misalnya, jika Anda menyertakan `location` bidang di setiap dokumen, Anda dapat menentukan filter kotak pembatas Anda sebagai`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
```

Untuk informasi selengkapnya, lihat [Pencarian dan Peringkat Hasil berdasarkan Lokasi Geografis di Amazon CloudSearch](searching-locations.md).

## Mencari Rentang Teks
<a name="searching-ranges-text"></a>

Anda juga dapat mencari teks atau bidang literal untuk rentang nilai menggunakan sintaks rentang kurung. Seperti tanggal, string teks harus dilampirkan dalam tanda kutip tunggal. Misalnya, permintaan berikut mencari data film untuk berbagai dokumen IDs. Untuk mereferensikan ID dokumen, Anda menggunakan nama bidang khusus`_id`.

```
_id:['tt1000000','tt1005000']
```

# 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).

# Mencari Data DynamoDB dengan Amazon CloudSearch
<a name="searching-dynamodb-data"></a>

Anda dapat menentukan tabel DynamoDB sebagai sumber saat mengonfigurasi opsi pengindeksan atau mengunggah data ke domain pencarian melalui konsol. Ini memungkinkan Anda untuk dengan cepat mengatur domain pencarian untuk bereksperimen dengan mencari data yang disimpan dalam tabel database DynamoDB. 

Agar domain penelusuran tetap sinkron dengan perubahan pada tabel, Anda dapat mengirim pembaruan ke tabel dan domain pencarian Anda, atau Anda dapat memuat seluruh tabel secara berkala ke dalam domain pencarian baru. 

**Topics**
+ [Mengkonfigurasi CloudSearch Domain Amazon untuk Mencari Data DynamoDB](#searching-dynamodb-data.configuring)
+ [Mengunggah Data ke Amazon CloudSearch dari DynamoDB](#searching-dynamodb-data.uploading)
+ [Menyinkronkan Domain Pencarian dengan Tabel DynamoDB](#searching-dynamodb-data.sync)

## Mengkonfigurasi CloudSearch Domain Amazon untuk Mencari Data DynamoDB
<a name="searching-dynamodb-data.configuring"></a>

Cara termudah untuk mengonfigurasi domain pencarian untuk mencari data DynamoDB adalah dengan menggunakan konsol Amazon. CloudSearch Wizard konfigurasi konsol menganalisis data tabel Anda dan menyarankan opsi pengindeksan berdasarkan atribut dalam tabel. Anda dapat memodifikasi konfigurasi yang disarankan untuk mengontrol atribut tabel mana yang diindeks.

**catatan**  
Untuk mengunggah data dari DynamoDB, Anda harus memiliki izin untuk mengakses layanan dan sumber daya yang ingin Anda unggah. Untuk informasi selengkapnya, lihat [Menggunakan IAM untuk Mengontrol Akses ke Sumber Daya DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/UsingIAMWithDDB.html).

Bila Anda secara otomatis mengonfigurasi domain pencarian dari tabel DynamoDB, maksimal 200 atribut unik dapat dipetakan ke bidang indeks. (Anda tidak dapat mengonfigurasi lebih dari 200 bidang untuk domain pencarian, jadi Anda hanya dapat mengunggah data dari tabel DynamoDB dengan 200 atau lebih sedikit atribut.) Saat Amazon CloudSearch mendeteksi atribut yang memiliki sejumlah kecil nilai berbeda, bidang tersebut diaktifkan faset dalam konfigurasi yang disarankan. 

**penting**  
Bila Anda menggunakan tabel DynamoDB untuk mengkonfigurasi domain, data tidak secara otomatis diunggah ke domain untuk pengindeksan. Anda harus mengunggah data untuk pengindeksan sebagai langkah terpisah setelah Anda mengonfigurasi domain.

### Mengonfigurasi Domain untuk Mencari DynamoDB menggunakan Konsol Amazon CloudSearch
<a name="w2aac17c27b9c11"></a>

Anda dapat menggunakan CloudSearch konsol Amazon untuk menganalisis data dari tabel DynamoDB untuk mengonfigurasi domain pencarian. Maksimal 5 MB dibaca dari tabel terlepas dari ukuran tabel. Secara default, Amazon CloudSearch membaca dari awal tabel. Anda dapat menentukan tombol mulai untuk mulai membaca dari item tertentu. 

**Untuk mengkonfigurasi domain pencarian menggunakan tabel DynamoDB**

1. Buka CloudSearch konsol Amazon di [https://console.aws.amazon.com/cloudsearch/rumah](https://console.aws.amazon.com/cloudsearch/home).

1. Dari panel navigasi kiri, pilih **Domain**.

1. Pilih nama domain untuk membuka panel detailnya.

1. Buka tab **Opsi pengindeksan** dan pilih **Wisaya konfigurasi**.

1. Pilih **Amazon DynamoDB**.

1. Pilih tabel DynamoDB yang ingin Anda analisis. 
   + Untuk membatasi unit kapasitas baca yang dapat dikonsumsi saat membaca dari tabel, masukkan persentase maksimum unit kapasitas baca yang ingin Anda gunakan.
   + Untuk mulai membaca dari item tertentu, tentukan **kunci Mulai hash**. Jika tabel menggunakan kunci primer tipe hash dan rentang, tentukan atribut hash dan atribut range untuk item tersebut. 

1. Pilih **Berikutnya**.

1. Tinjau konfigurasi yang disarankan. Anda dapat mengedit bidang ini dan menambahkan bidang tambahan. 

1. Setelah selesai, pilih **Konfirmasi**.

1. Jika Anda belum mengunggah data ke domain Anda, kosongkan kotak centang **Jalankan pengindeksan sekarang** untuk keluar tanpa pengindeksan. Jika Anda selesai membuat perubahan konfigurasi dan siap untuk mengindeks data Anda dengan konfigurasi baru, pastikan **Run indexing now** dipilih. Saat Anda siap menerapkan perubahan, pilih **Selesai**.

## Mengunggah Data ke Amazon CloudSearch dari DynamoDB
<a name="searching-dynamodb-data.uploading"></a>

Anda dapat mengunggah data DynamoDB ke domain pencarian melalui konsol CloudSearch Amazon atau dengan alat baris perintah CloudSearch Amazon. Saat Anda mengunggah data dari tabel DynamoDB, CloudSearch Amazon mengonversinya menjadi kumpulan dokumen sehingga dapat diindeks. Anda memilih menentukan bidang indeks untuk setiap atribut dalam konfigurasi domain Anda. Untuk informasi selengkapnya, lihat [Mengkonfigurasi CloudSearch Domain Amazon untuk Mencari Data DynamoDB](#searching-dynamodb-data.configuring).

Anda dapat mengunggah data dari lebih dari satu tabel DynamoDB ke domain Amazon yang sama. CloudSearch Namun, perlu diingat bahwa Anda dapat mengunggah maksimal 200 atribut dari semua tabel yang digabungkan. Jika item dengan kunci yang sama muncul di lebih dari satu tabel yang diunggah, item yang diterapkan terakhir akan menimpa semua versi sebelumnya. 

Saat mengonversi data tabel ke kumpulan dokumen, Amazon CloudSearch menghasilkan dokumen untuk setiap item yang dibaca dari tabel, dan mewakili setiap atribut item sebagai bidang dokumen. ID unik untuk setiap dokumen dibaca dari atribut `docid` item (jika ada) atau diberi nilai alfanumerik berdasarkan kunci utama. 

Saat Amazon CloudSearch menghasilkan dokumen untuk item tabel:
+ Set string dan set angka direpresentasikan sebagai bidang multi-nilai. Jika kumpulan DynamoDB berisi lebih dari 100 nilai, hanya 100 nilai pertama yang ditambahkan ke bidang multi-nilai.
+ Atribut biner DynamoDB diabaikan.
+ Nama atribut dimodifikasi agar sesuai dengan konvensi CloudSearch penamaan Amazon untuk nama bidang:
  + Semua huruf besar dikonversi menjadi huruf kecil.
  + Jika nama atribut DynamoDB tidak dimulai dengan huruf, nama bidang diawali dengan. `f_`
  + Karakter apa pun selain a-z, 0-9, dan \$1 (garis bawah) diganti dengan garis bawah. Jika transformasi ini menghasilkan nama bidang duplikat, nomor ditambahkan untuk membuat nama bidang unik. Misalnya, nama atribut`håt`,`h-t`, `hát` akan dipetakan ke`h_t`,`h_t1`, dan `h_t2` masing-masing.
  + Jika nama atribut DynamoDB melebihi 64 karakter, 56 karakter pertama dari nama atribut digabungkan dengan hash MD5 8 karakter dari nama atribut lengkap untuk membentuk nama bidang.
  + Jika nama atribut adalah`body`, itu dipetakan ke nama `f_body` bidang. 
  + Jika nama atribut ` _score` itu dipetakan ke nama ` f_ _score` bidang.
+ Atribut angka dipetakan ke bidang CloudSearch int Amazon dan nilainya diubah menjadi bilangan bulat 32-bit yang tidak ditandatangani:
  + Jika atribut angka berisi nilai desimal, hanya bagian integral dari nilai yang disimpan. Semuanya di sebelah kanan titik desimal dijatuhkan.
  + Jika nilainya lebih besar dari yang dapat disimpan sebagai bilangan bulat yang tidak ditandatangani, nilainya terpotong. 
  + Bilangan bulat negatif diperlakukan sebagai bilangan bulat positif yang tidak ditandatangani.

### Mengunggah Data DynamoDB ke Domain melalui Konsol Amazon CloudSearch
<a name="searching-dynamodb-data-console"></a>

Anda dapat menggunakan CloudSearch konsol Amazon untuk mengunggah hingga 5 MB data dari tabel DynamoDB ke domain pencarian.

**Untuk mengunggah data DynamoDB menggunakan konsol**

1. Buka CloudSearch konsol Amazon di [https://console.aws.amazon.com/cloudsearch/rumah](https://console.aws.amazon.com/cloudsearch/home).

1. Dari panel navigasi kiri, pilih **Domain**.

1. Pilih nama domain untuk membuka konfigurasinya.

1. Pilih **Tindakan**, **Unggah dokumen**.

1. Pilih **Amazon DynamoDB**.

1. Dari dropdown, pilih tabel DynamoDB yang berisi data Anda. 
   + Untuk membatasi unit kapasitas baca yang dapat dikonsumsi saat membaca dari tabel, masukkan persentase maksimum unit kapasitas baca.
   + Untuk mulai membaca dari item tertentu, tentukan **kunci Mulai hash**. Jika tabel menggunakan kunci primer tipe hash dan rentang, tentukan atribut hash dan atribut range untuk item tersebut.

1. Ketika Anda selesai menentukan opsi tabel, pilih **Berikutnya**.

1. Tinjau item yang akan diunggah. Anda juga dapat menyimpan kumpulan dokumen yang dihasilkan dengan memilih **Unduh kumpulan dokumen yang dihasilkan**. Kemudian pilih **Unggah dokumen**. 

## Menyinkronkan Domain Pencarian dengan Tabel DynamoDB
<a name="searching-dynamodb-data.sync"></a>

Agar domain penelusuran tetap sinkron dengan pembaruan ke tabel DynamoDB, Anda dapat melacak dan menerapkan pembaruan ke domain Anda secara terprogram, atau secara berkala membuat domain baru dan mengunggah seluruh tabel lagi. Jika Anda memiliki sejumlah besar data, yang terbaik adalah melacak dan menerapkan pembaruan secara terprogram. 

### Pembaruan Sinkronisasi Pemrograman
<a name="searching-dynamodb-data.sync.programmatically"></a>

Untuk menyinkronkan perubahan dan penambahan ke tabel DynamoDB Anda, Anda dapat membuat tabel pembaruan terpisah untuk melacak perubahan pada tabel yang Anda cari dan secara berkala mengunggah konten tabel pembaruan ke domain pencarian yang sesuai. 

Untuk menghapus dokumen dari domain pencarian, Anda harus membuat dan mengunggah kumpulan dokumen yang berisi operasi penghapusan untuk setiap dokumen yang dihapus. Salah satu opsi adalah menggunakan tabel DynamoDB terpisah untuk melacak item yang dihapus, memproses tabel secara berkala untuk menghasilkan sekumpulan operasi penghapusan, dan mengunggah batch ke domain pencarian Anda. 

Untuk memastikan bahwa Anda tidak kehilangan perubahan apa pun yang dilakukan selama pengunggahan data awal, Anda harus mulai mengumpulkan perubahan pelacakan sebelum pengunggahan data awal. Meskipun Anda mungkin memperbarui beberapa CloudSearch dokumen Amazon dengan data yang identik, Anda memastikan bahwa tidak ada perubahan yang hilang dan domain pencarian Anda berisi up-to-date versi dari setiap dokumen.

Seberapa sering Anda menyinkronkan pembaruan tergantung pada volume perubahan dan toleransi latensi pembaruan Anda. Salah satu pendekatannya adalah mengumpulkan perubahan selama periode waktu yang tetap dan pada akhir periode waktu unggah perubahan dan hapus tabel pelacakan periode tersebut.

Misalnya, untuk menyinkronkan perubahan dan penambahan sekali sehari, pada awal setiap hari Anda dapat membuat tabel bernama Updates\$1YYY\$1MM\$1DD untuk mengumpulkan pembaruan harian. Di penghujung hari, Anda mengunggah tabel Updates\$1YYY\$1MM\$1DD ke domain pencarian Anda. Setelah unggahan selesai, Anda dapat menghapus tabel pembaruan dan membuat yang baru untuk hari berikutnya. 

### Beralih ke Domain Pencarian Baru
<a name="searching-dynamodb-data.sync.newtable"></a>

Jika Anda tidak ingin melacak dan menerapkan pembaruan individual ke tabel Anda, Anda dapat memuat seluruh tabel secara berkala ke domain pencarian baru dan kemudian mengalihkan lalu lintas kueri Anda ke domain baru. 

**Untuk beralih ke domain pencarian baru**

1. Buat domain pencarian baru dan salin konfigurasi dari domain yang ada.

1. Unggah seluruh tabel DynamoDB ke domain baru. Untuk informasi selengkapnya, lihat [Mengunggah Data ke Amazon CloudSearch dari DynamoDB](#searching-dynamodb-data.uploading).

1. Setelah domain baru aktif, perbarui entri DNS yang mengarahkan lalu lintas kueri ke domain pencarian lama untuk menunjuk ke domain baru. Misalnya, jika Anda menggunakan [Amazon Route 53](https://aws.amazon.com/route53/), Anda cukup memperbarui recordset dengan endpoint layanan pencarian baru Anda.

1. Hapus domain lama.

# Memfilter Dokumen Pencocokan di Amazon CloudSearch
<a name="filtering-results"></a>

Anda menggunakan `fq` parameter untuk memfilter dokumen yang cocok dengan kriteria pencarian yang ditentukan dengan `q` parameter tanpa memengaruhi skor relevansi dokumen yang disertakan dalam hasil pencarian. Menentukan filter hanya mengontrol dokumen pencocokan mana yang disertakan dalam hasil, itu tidak berpengaruh pada bagaimana mereka dinilai dan diurutkan. 

`fq`Parameter mendukung sintaks kueri terstruktur yang dijelaskan dalam[Cari Referensi API](search-api.md).

Misalnya, Anda dapat menambahkan `available` bidang ke dokumen Anda untuk menunjukkan apakah suatu item dalam stok atau tidak, dan memfilter pada bidang itu untuk membatasi hasil untuk item dalam stok: 

```
search?q=star+wars&fq=available:'true'&return=title
```

# Menyetel Kinerja Permintaan Pencarian di Amazon CloudSearch
<a name="tuning-search"></a>

Permintaan pencarian dapat menjadi sangat intensif sumber daya untuk diproses, yang dapat berdampak pada kinerja dan biaya menjalankan domain pencarian Anda. Secara umum, penelusuran yang mengembalikan volume klik yang besar dan kueri terstruktur yang kompleks lebih intensif sumber daya daripada kueri teks sederhana yang cocok dengan persentase kecil dokumen di domain penelusuran Anda. 

Jika Anda mengalami waktu respons yang lambat, sering mengalami kesalahan server internal (biasanya kesalahan 507 atau 509), atau melihat jumlah jam instance yang dikonsumsi domain pencarian Anda meningkat tanpa peningkatan substanal dalam volume data yang Anda cari, Anda dapat menyempurnakan permintaan pencarian Anda untuk membantu mengurangi overhead pemrosesan. Bagian ini mengulas apa yang harus dicari dan langkah-langkah yang dapat Anda ambil untuk menyesuaikan permintaan pencarian Anda.

## Menganalisis Latensi Kueri
<a name="tuning-search-latency"></a>

Sebelum Anda dapat menyetel permintaan Anda, Anda harus menganalisis kinerja pencarian Anda saat ini. Catat permintaan pencarian dan waktu respons Anda sehingga Anda dapat melihat permintaan mana yang paling lama diproses. Penelusuran yang lambat dapat secara tidak proporsional memengaruhi kinerja keseluruhan dengan mengikat sumber daya domain pencarian Anda. Mengoptimalkan permintaan pencarian paling lambat mempercepat *semua* pencarian Anda.

**Topics**
+ [Mengurangi Jumlah Hits](#tuning-search-numdocs)
+ [Menyederhanakan Kueri Terstruktur](#simplifying-structured-queries)

### Mengurangi Jumlah Hits
<a name="tuning-search-numdocs"></a>

Latensi kueri berbanding lurus dengan jumlah dokumen yang cocok. Pencarian yang cocok dengan sebagian besar dokumen umumnya paling lambat. 

Menghilangkan dua jenis pencarian yang biasanya menghasilkan sejumlah besar dokumen yang cocok dapat secara signifikan meningkatkan kinerja keseluruhan:
+ Kueri yang cocok dengan setiap dokumen di corpus () `matchall` Anda. Meskipun ini bisa menjadi cara yang mudah untuk membuat daftar semua dokumen di domain Anda, ini adalah kueri intensif sumber daya. Jika Anda memiliki banyak dokumen, tidak hanya dapat menyebabkan permintaan lain habis waktu, kemungkinan akan habis sendiri. 
+ Awalan (wildcard) mencari dengan hanya satu atau dua karakter yang ditentukan. Jika Anda menggunakan jenis pencarian ini untuk memberikan hasil instan saat pengguna mengetik, tunggu hingga pengguna memasukkan setidaknya dua karakter sebelum Anda mulai mengirimkan permintaan dan menampilkan kemungkinan kecocokan.

Untuk mengurangi jumlah dokumen yang sesuai dengan permintaan Anda, Anda juga dapat melakukan hal berikut:
+ Hilangkan kata-kata yang tidak relevan dari korpus Anda sehingga tidak digunakan untuk pencocokan. Cara termudah untuk melakukannya adalah dengan menambahkannya ke kamus daftar stopwords untuk skema analisis yang Anda gunakan. Atau, Anda dapat memproses data Anda terlebih dahulu untuk menghapus kata-kata yang tidak relevan. Menghilangkan kata-kata yang tidak relevan juga memiliki manfaat mengurangi ukuran indeks Anda, yang dapat membantu mengurangi biaya.
+ Secara eksplisit memfilter hasil berdasarkan nilai bidang tertentu menggunakan parameter. `fq`

Jika Anda masih memiliki permintaan yang cocok dengan banyak dokumen, Anda dapat mengurangi latensi dengan meminimalkan jumlah pemrosesan yang harus dilakukan pada set hasil:
+ Minimalkan informasi aspek yang Anda minta. Menghasilkan jumlah aspek menambah waktu yang diperlukan untuk memproses permintaan dan meningkatkan kemungkinan permintaan lain akan habis waktu. Jika Anda meminta informasi aspek, ingatlah bahwa semakin banyak aspek yang Anda tentukan, semakin lama waktu yang dibutuhkan untuk memproses permintaan.
+ Hindari menggunakan ekspresi Anda sendiri untuk menyortir. Pemrosesan tambahan yang diperlukan untuk mengurutkan hasil meningkatkan kemungkinan permintaan akan habis waktu. Jika Anda harus menyesuaikan bagaimana hasil diurutkan, umumnya lebih cepat menggunakan bidang daripada menggunakan ekspresi. 

Perlu diingat bahwa mengembalikan sejumlah besar data dalam hasil pencarian dapat meningkatkan waktu transportasi dan memengaruhi latensi kueri. Minimalkan jumlah bidang pengembalian yang Anda gunakan untuk meningkatkan kinerja dan mengurangi ukuran indeks Anda. 

### Menyederhanakan Kueri Terstruktur
<a name="simplifying-structured-queries"></a>

Semakin banyak klausa yang ada dalam kriteria kueri, semakin lama waktu yang dibutuhkan untuk memproses kueri. 

Jika Anda memiliki kueri terstruktur kompleks yang tidak berkinerja baik, Anda perlu menemukan cara untuk mengurangi jumlah klausa. Dalam beberapa kasus, Anda mungkin hanya dapat menetapkan batas atau merumuskan ulang kueri. Di tempat lain, Anda mungkin perlu memodifikasi konfigurasi domain Anda untuk mengakomodasi kueri yang lebih sederhana. 