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类的实例。
-       参数 结果值 - 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),每个要求编制索引的文档对应一个结果。
 异常 - PutError
- 一个或多个文档无法编制索引,或编制索引的文档数与请求的数量不符。 
- TypeError
- 传递了未知属性。 
- ValueError
- 参数不是文档或可迭代文档集合,或文档数大于 - MAXIMUM_DOCUMENTS_PER_PUT_REQUEST。
 
- delete(self, document_ids, deadline=None)
-       删除索引中的文档。 如果列表中的标识符没有对应的文档,则忽略该标识符。 
-       参数 - document_ids
- 要删除的文档的标识符(或标识符列表)。 
- deadline
- 远程过程调用 (RPC) 的期限(以秒为单位)。 
 异常 - DeleteError
- 一个或多个文档无法删除,或删除的数量与请求的数量不符。 
- ValueError
- 参数不是有效文档标识符的字符串或可迭代集合,或文档标识符数大于 - MAXIMUM_DOCUMENTS_PER_PUT_REQUEST。
 
- get(self,doc_id, deadline=None)
- 
        使用文档的标识符从索引中检索文档。如果未找到该文档,则系统会返回 None。
-       参数 - doc_id
-                 要检索的文档的标识符。 
- deadline
- 远程过程调用 (RPC) 的期限(以秒为单位)。 
 结果值 - Document 对象,其标识符与 doc_id 提供的标识符匹配。 
 
- search(query, deadline=None)
- 在索引中搜索与查询匹配的文档。查询可以是字符串或 Query 对象。 - 例如,以下代码片段请求搜索主题中出现“first”且任意位置出现“good”的文档,最多返回 20 个文档,搜索从“游标标记”开始,返回另一个游标作为响应,按主题降序排列,返回作者、主题和摘要字段以及摘录的字段内容。 - 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
- 包含要从其开始列出文档的文档标识符的字符串。默认情况下,从第一个文档标识符开始。 
- include_start_object
- 如果为 - true,请加入由- start_id指定的文档。
- limit
- 要返回的文档数上限。 
- ids_only
- 如果为 - true,则仅返回文档标识符而不是完整文档。
- deadline
- 远程过程调用 (RPC) 的期限(以秒为单位)。 
 结果值 - A GetResponse对象,包含检索到的文档列表,按文档标识符排序。
 异常 - TypeError
- 传递了未知属性。 
- 错误
- 处理请求时发生的某些 - Error子类。