Query 类

Query 类表示请求搜索服务对索引进行查询。

Query 在模块 google.appengine.api.search 中定义。

简介

借助 Query 类,您可以为索引搜索指定查询字符串和其他选项,例如排序顺序、限制和游标。通过将 QueryOptions 类实例化为 Query.options 参数,您可以对这些选项进行设置。

例如,以下代码段发起一个请求来搜索主题中出现 first 且任何位置出现 good 的文档,最多返回 20 个文档,为每个结果返回单个文档游标,按主题降序排列,返回作者、主题和摘要字段以及摘录的字段内容。

from google.appengine.api import search

...
results = index.search(search.Query(
    # Specify the query string using the Search API's Query language.
    query_string='subject:first good',
    options=search.QueryOptions(
        limit=20,
        cursor=search.Cursor(),
        sort_options=search.SortOptions(
            expressions=[
                search.SortExpression(expression='subject', default_value='')],
            limit=1000),
        returned_fields=['author', 'subject', 'summary'],
        snippeted_fields=['content'])))
...

您可以选择为每组搜索结果返回一个游标。通过此游标,您可以更加轻松地逐页浏览搜索结果。如需获取游标,请在 QueryOptions.cursor 中指定该游标,并从 SearchResults.cursor 中为下一个请求提取游标。这样您便可以继续从最后找到的文档中进行搜索,如下所示:

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

构造函数

Query 类的构造函数定义如下:

class Query(query_string, options=None, enable_facet_discovery=False, return_facets=None, facet_options=None, facet_refinements=None)

请求搜索服务对索引进行查询,为该查询指定参数。

参数

query_string

与索引中的文档匹配的查询。查询是包含字词的布尔表达式。例如,通过 job tag:"very important" sent < 2011-02-28 查询找到的文档中,任何字段中均包含字词 jobtag 字段中包含 very important 词组,并且 sent 日期早于 2011 年 2 月 28 日。

options

QueryOptions 类的实例化,以及对搜索结果进行后处理的说明。

enable_facet_discovery

允许发现满足该搜索查询的文档所使用的最相关构面,并返回这些构面。

return_facets

FacetRequest 或作为构面名称的基础字符串的迭代,可返回带有结果的特定构面。

facet_options

描述构面处理的 FacetOption。

facet_refinements

FacetRefinement 对象或优化词法单元字符串的迭代,用于根据构面值过滤出搜索结果。不同构面的优化将结合,而同一构面的优化将分离。

结果值

Query 类的新实例。

异常

TypeError

query_string 不是字符串或 options 不是 QueryOptions 对象时引发。

ValueError

无法解析 query_string 时引发。

属性

Query 类的实例具有以下属性:

query_string

返回要在该请求中搜索的查询字符串。

options

返回用于定义搜索结果后处理的 QueryOptions