Class Indeks

Class Index mewakili indeks yang memungkinkan dokumen diindeks, dihapus, dan ditelusuri.

Index ditentukan dalam modul google.appengine.api.search.

Pengantar

Class Index menyediakan argumen untuk membuat indeks serta fungsi yang memungkinkan Anda menambahkan, membuat daftar, menelusuri, dan menghapus dokumen (atau koleksi dokumen yang dapat diiterasi) di dalam indeks. Anda membuat indeks menggunakan argumen ke class Index, termasuk nama dan namespace indeks tersebut.

Kode berikut menunjukkan cara memasukkan dokumen ke dalam indeks, lalu menelusurinya untuk menemukan dokumen yang cocok dengan kueri:

# Get the index.
index = search.Index(name='index-name')

# Create a document.
doc = search.Document(
    doc_id='document-id',
    fields=[search.TextField(name='subject', value='my first email'),
            search.HtmlField(name='body', value='<html>some content here</html>')])

# Index the document.
try:
    index.put(doc)
except search.PutError, e:
    result = e.results[0]
    if result.code == search.OperationResult.TRANSIENT_ERROR:
        # possibly retry indexing result.object_id
except search.Error, e:
    # possibly log the failure

# Query the index.
try:
    results = index.search('subject:first body:here')

    # Iterate through the search results.
    for scored_document in results:
        # process the scored_document

except search.Error, e:
    # possibly log the failure

Konstruktor

Konstruktor untuk class Index ditentukan sebagai berikut:

Index(name, namespace=None)

Buat instance class Index.

Argumen

name

Nama indeks (lihat properti nama di bawah untuk mengetahui detailnya).

namespace

Untuk aplikasi multitenant, namespace tempat nama indeks ditentukan.

Nilai hasil

Instance baru dari class Index.

Properti

Instance class Index memiliki properti berikut:

schema

Nama kolom pemetaan skema ke daftar jenis yang didukung. Hanya valid untuk indeks yang ditampilkan oleh metode search.get_indexes.

name

Nama indeks, string ASCII yang dapat dibaca manusia yang mengidentifikasi indeks. Tidak boleh berisi karakter spasi kosong dan tidak boleh diawali dengan tanda seru (!).

namespace

Namespace tempat nama indeks ditentukan.

storage_usage

Perkiraan jumlah byte yang digunakan oleh indeks ini. Jumlah tersebut mungkin tidak mencerminkan hasil perubahan terbaru. Hanya valid untuk indeks yang ditampilkan oleh metode search.get_indexes.

storage_limit

Penyimpanan maksimum yang diizinkan untuk indeks ini, dalam satuan byte. Hanya valid untuk indeks yang ditampilkan oleh metode search.get_indexes.

Metode Instance

Instance class Index memiliki metode berikut:

put(self, documents, deadline=None)

Jika dokumen yang ditentukan telah dimasukkan ke dalam indeks, dan jika memiliki doc_ids yang sama, dokumen tersebut akan diindeks ulang dengan konten yang diperbarui.

Argumen

documents

Dokumen (atau koleksi dokumen yang dapat diiterasi) untuk diindeks.

deadline

Tenggat waktu panggilan RPC dalam detik.

Nilai hasil

Daftar hasil (PutResult), satu untuk setiap dokumen yang diminta untuk diindeks.

Pengecualian

PutError

Satu atau beberapa dokumen gagal diindeks, atau nomor yang diindeks tidak cocok dengan jumlah yang diminta.

TypeError

Atribut yang tidak diketahui diteruskan.

ValueError

Argumen bukan dokumen atau koleksi dokumen yang dapat diiterasi, atau jumlah dokumen yang lebih besar dari MAXIMUM_DOCUMENTS_PER_PUT_REQUEST.

delete(self, document_ids, deadline=None)

Hapus dokumen dari indeks.

Jika tidak ada dokumen untuk ID dalam daftar, ID tersebut akan diabaikan.

Argumen

document_ids

ID (atau daftar ID) dokumen yang akan dihapus.

deadline

Tenggat waktu panggilan RPC dalam detik.

Pengecualian

DeleteError

Satu atau beberapa dokumen gagal dihapus, atau jumlah yang dihapus tidak cocok dengan jumlah yang diminta.

ValueError

Argumen bukan string atau kumpulan ID dokumen yang valid yang dapat diiterasi, atau jumlah ID dokumen yang lebih besar dari MAXIMUM_DOCUMENTS_PER_PUT_REQUEST.

get(self,doc_id, deadline=None)

Mengambil Dokumen dari indeks menggunakan ID dokumen. Jika dokumen tidak ditemukan, None akan ditampilkan.

Argumen

doc_id

ID dokumen yang akan diambil.

deadline

Tenggat waktu panggilan RPC dalam detik.

Nilai hasil

Objek Dokumen dengan ID yang cocok dengan ID yang disediakan oleh doc_id.

Menelusuri indeks untuk menemukan dokumen yang cocok dengan kueri. Kueri dapat berupa string atau objek Kueri.

Misalnya, fragmen kode berikut meminta penelusuran untuk dokumen dengan 'first' muncul dalam subjek dan 'good' terjadi di mana saja, menampilkan maksimal 20 dokumen, memulai penelusuran dari 'cursor token', mengembalikan satu kursor lain untuk respons, mengurutkan berdasarkan subjek dalam urutan menurun, yang menampilkan kolom penulis, subjek, dan ringkasan, serta konten kolom yang dipotong.

results = index.search(
          # Define the query by using a Query object.
          query=Query('subject:first good',
              options=QueryOptions(limit=20,
                  cursor=Cursor(),
                  sort_options=SortOptions(
                      expressions=[SortExpression(expression='subject',
                                                  default_value='')],
                      limit=1000),
                  returned_fields=['author', 'subject', 'summary'],
                  snippeted_fields=['content'])))

Fragmen kode berikut menunjukkan cara menggunakan kursor hasil.

cursor = results.cursor
for result in results:
     # process result
results = index.search(Query('subject:first good',
                       options=QueryOptions(cursor=cursor))
                      )

Fragmen kode berikut menunjukkan cara menggunakan kursor per_result:

results = index.search(query=Query('subject:first good',
                       options=QueryOptions(limit=20,
                       cursor=Cursor(per_result=True),
                       ...))
                       )

cursor = None
for result in results:
    cursor = result.cursor

results = index.search(
          Query('subject:first good', options=QueryOptions(cursor=cursor))
               )

Argumen

query

Kueri yang akan dicocokkan dengan dokumen dalam indeks, yang dijelaskan dalam objek Kueri. Untuk informasi selengkapnya, lihat Ringkasan Bahasa Kueri.

deadline

Tenggat waktu panggilan RPC dalam detik.

Nilai hasil

Objek SearchResults yang berisi daftar dokumen yang cocok, jumlah yang ditampilkan, dan angka yang cocok dengan kueri.

Pengecualian

TypeError

Parameter memiliki jenis yang tidak valid, atau atribut yang tidak diketahui telah diteruskan.

ValueError

Parameter memiliki nilai yang tidak valid.

get_range(self, start_id=None, include_start_object=True, limit=100, ids_only=False, deadline=None)

Mendapatkan berbagai dokumen dari indeks, dalam urutan doc_id.

Argumen

start_id

String yang berisi ID dokumen yang digunakan untuk mencantumkan dokumen. Secara default, dimulai pada ID dokumen pertama.

include_start_object

Jika true, sertakan dokumen yang ditentukan oleh start_id.

limit

Jumlah dokumen maksimum yang akan ditampilkan.

ids_only

Jika true, hanya menampilkan ID dokumen, bukan dokumen lengkap.

deadline

Tenggat waktu panggilan RPC dalam detik.

Nilai hasil

Objek A GetResponse yang berisi daftar dokumen yang diambil, yang diurutkan berdasarkan ID dokumen.

Pengecualian

TypeError

Atribut yang tidak diketahui diteruskan.

Error

Beberapa subclass Error terjadi saat memproses permintaan.