AppEngine搜索 - 数字运算符不工作?

时间:2012-09-06 17:49:51

标签: google-app-engine search

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

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

例如,这有效:

作者:“Rose Jones”长度= 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')

2 个答案:

答案 0 :(得分:1)

好的,我想我发现了这个问题。这听起来有点傻(对我来说!),但是这里有:

使用除=之外的运算符似乎要求该字段已存在于模式/索引中的某个位置。

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

虽然长度= 15不会产生同样的抱怨,但只会返回零结果。

我基本上构建了一个查询构造函数并且正在对搜索进行查询以检查我的语法...我认为存在语法问题,因为一种类型的查询被接受而另一种不是,但似乎目前,除了相等之外的比较需要匹配索引中的数据。

答案 1 :(得分:-1)

查看filters for Java

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

或Python here

q.filter('height >', 42).filter('city =', 'Seattle')
q.filter('user =', users.get_current_user())