0

我正在尝试在应用引擎上使用搜索服务...当我尝试使用数字运算符时遇到了问题。我收到一个 InvalidRequest 错误。

起初我认为这是我的查询的其他内容,但是当我使用文档中的示例时,我得到了相同的结果。

例如,这有效:

作者:“罗斯琼斯”长度 = 15

但是这个例子,直接从文档复制,抛出一个 InvalidRequest 错误:

作者:《玫瑰琼斯》长度 > 15

据我所知,= 以外的任何运算符都不起作用。

任何人都可以帮忙吗?:)

编辑 - 每个请求的代码:

INDEX_NAME = 'sample'

query_string = 'author:"Rose Jones" length > 15'

logging.info('final query string: '+query_string)

try:
    results = search.Index(name=INDEX_NAME).search(query_string)
except search.Error:
    logging.exception('Search failed')
    self.errorManager.add('search6')
4

2 回答 2

1

好的,我想我找到了问题所在。这听起来有点傻(我!),但这里是:

使用 = 以外的运算符似乎要求该字段已经存在于您的架构/索引中的某个位置。

因此,如果您说长度 > 15,则需要有一个具有“长度”作为属性的文档,否则它将失败。

虽然 length = 15 不会做出同样的抱怨,只会返回零结果。

我基本上是在构建一个查询构造函数并针对搜索抛出查询以检查我的语法......我认为存在语法问题,因为一种类型的查询被接受而另一种不被接受,但似乎比较不同无论如何,平等目前需要在索引中匹配数据。

于 2012-09-06T18:45:13.183 回答
-1

查看有关Java过滤器的文档

Query q = pm.newQuery(Person.class);
q.setFilter("height < 72");

或这里的 Python

q.filter('height >', 42).filter('city =', 'Seattle')
q.filter('user =', users.get_current_user())
于 2012-09-06T17:56:36.933 回答