Index
クラスは、ドキュメントのインデックス登録、削除、検索を可能にするためのインデックスを表します。
Index
は、google.appengine.api.search
モジュールで定義されます。
はじめに
Index
クラスは、インデックスを作成するための引数のほか、インデックス内のドキュメント(またはドキュメントの反復可能なコレクション)を追加、リスト表示、検索、削除できるようにする関数を提供します。インデックスの名前や名前空間など、Index
クラスに対する引数を使用してインデックスを作成します。
次のコードは、ドキュメントをインデックスに追加してから、クエリに一致するドキュメントを検索する方法を示しています。
# 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
コンストラクタ
Index
クラスのコンストラクタは、次のように定義されます。
-
Index(name, namespace=None)
クラス
Index
のインスタンスを作成します。-
引数
- name
インデックス名(詳しくは、下記の name プロパティをご覧ください)。
- namespace
マルチテナント アプリケーションの場合、インデックス名が定義される名前空間。
結果値
Index
クラスの新しいインスタンス。
プロパティ
Index
クラスのインスタンスには次のプロパティがあります。
- schema
サポートされるタイプのリストにフィールド名をマッピングするスキーマ。
search.get_indexes
メソッドから返されるインデックスにのみ有効です。- name
インデックス名。人間が読み取れる形式の ASCII 文字列で、インデックスを識別します。空白文字を含めることはできません。また、先頭に感嘆符(
!
)は使用できません。- namespace
インデックス名が定義される名前空間。
- storage_usage
このインデックスで使用されるバイトの概数。この数は、最近の変更結果を反映しない場合があります。
search.get_indexes
メソッドから返されるインデックスにのみ有効です。- storage_limit
このインデックスのバイト単位の最大許容保存容量。
search.get_indexes
メソッドから返されるインデックスにのみ有効です。
インスタンス メソッド
Index
クラスのインスタンスには次のメソッドがあります。
- put(self, documents, deadline=None)
-
指定したドキュメントがすでにインデックスに追加されていて、各ドキュメントの
doc_ids
が同一である場合、それらのドキュメントは更新したコンテンツでインデックスに再登録されます。 -
引数
- documents
インデックスに登録するドキュメント(またはドキュメントの反復可能なコレクション)。
- deadline
秒単位の RPC コールの期限。
結果値
結果(
PutResult
)のリスト。結果は、インデックス登録が要求されたドキュメントごとに 1 つです。
例外
- PutError
1 つまたは複数のドキュメントのインデックス登録に失敗したか、インデックス登録数が要求数に一致しませんでした。
- TypeError
不明な属性が渡されました。
- ValueError
引数がドキュメントまたはドキュメントの反復可能なコレクションではないか、ドキュメントの数が
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
を超えています。
- delete(self, document_ids, deadline=None)
-
ドキュメントをインデックスから削除します。
リスト内の ID についてドキュメントが存在しない場合、その ID は無視されます。
-
引数
- document_ids
削除するドキュメントの ID(または ID のリスト)。
- deadline
秒単位の RPC コールの期限。
例外
- DeleteError
1 つまたは複数のドキュメントの削除に失敗したか、削除数が要求数に一致しませんでした。
- ValueError
引数が有効なドキュメント ID の文字列または反復可能なコレクションではないか、ドキュメント ID の数が
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
を超えています。
- get(self,doc_id, deadline=None)
-
ドキュメントの ID を使用してインデックスからドキュメントを取得します。ドキュメントが見つからない場合、
None
を返します。 -
引数
- doc_id
-
取得するドキュメントの ID。
- deadline
秒単位の RPC コールの期限。
結果値
ID が doc_id により指定されるものと一致する Document オブジェクト。
- search(query, deadline=None)
インデックス内でクエリに一致するドキュメントを検索します。クエリは、文字列または Query オブジェクトのいずれかです。
たとえば次のコードでは、タイトルに「first」、いずれかの部分に「good」を含むドキュメントの検索を要求しています。この例の場合、最大で 20 のドキュメントが返され、「カーソル トークン」から検索を開始し、その応答について別のカーソルが 1 つ返され、タイトルで降順に並べ替えて、作成者、タイトル、概要の各フィールドの他にスニペット フィールドのコンテンツが返されます。
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'])))
次のコードは、結果のカーソルの使用方法を示します。
cursor = results.cursor for result in results: # process result results = index.search(Query('subject:first good', options=QueryOptions(cursor=cursor)) )
次のコードは、
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)) )
-
引数
結果値
クエリにより一致したドキュメントの数、返された数、一致したドキュメントのリストを含む SearchResults オブジェクト。
例外
- TypeError
パラメータの型が無効であるか、不明な属性が渡されました。
- ValueError
パラメータの値が無効です。
- get_range(self, start_id=None, include_start_object=True, limit=100, ids_only=False, deadline=None)
-
一連のドキュメントをインデックスから
doc_id
の順に取得します。 -
引数
- start_id
ドキュメントをリスト表示する際に先頭になるドキュメント ID を含む文字列。デフォルトでは、1 つ目のドキュメント ID から開始します。
- include_start_object
true
の場合、start_id
で指定されたドキュメントを含みます。- limit
返されるドキュメントの最大数。
- ids_only
true
の場合、ドキュメント全体ではなくドキュメント ID のみを返します。- deadline
秒単位の RPC コールの期限。
結果値
取得済みドキュメントがドキュメント ID 順で並べられたリストを含む
A GetResponse
オブジェクト。
例外
- TypeError
不明な属性が渡されました。
- Error
リクエストの処理中に
Error
のサブクラスが発生しました。