2012-12-10 36 views
0

我想创建一个空的查询预期搜索订阅,但GAE产生异常GAE和前瞻性搜索:空查询

QuerySyntaxError: query:'' detail:'Query is empty.' 

这是不符合搜索API,它允许空查询兼容。任何解决方法?我应该提交问题吗?

回答

1

,就可以提交这个功能请求,但它是由设计(我不知道为什么)。如果你知道传入的文档会有一些共同点,你可以为这些文件写一个查询;例如,如果你的内容“是”加场“alldocuments”的文件,当你发送请求,你可以这样注册查询“alldocuments:是”匹配所有文件。

+0

申请http://code.google.com/p/googleappengine/issues/detail?id=8539 –

2

预期搜索服务旨在支持应用程序筛选文件流;希望少于所有文档匹配的应用程序。在这样的应用程序中,“空查询”通常会被视为错误的证据。无可否认,空的查询有时对于各种调试目的可能有用,然而,决定是根据生产用途来设计接口的合同。

至于建议由威尔·布朗,如果你想订阅,将匹配所有文件,然后再插入一些虚拟的领域具有恒定值到您的文件,然后创建一个公正,即场和值相匹配的查询。鉴于在需要“所有文档”的情况下,对于那些极少数情况可以使用这种简单的解决方法,我认为我们不可能为空查询提供支持。这也可能是有趣的是,对空查询禁止不只是在AppEngine上的代码,而且在访问的AppEngine提供前瞻性搜索服务的后端服务器。

尽管“搜索API”(实际上应该称为“回溯搜索API”)可能支持空查询,但重要的是要认识到,预期搜索的资源利用模式与回溯搜索的资源利用模式非常不同。例如,您可能有一个应用程序每秒将数百个文档传输到文档索引(使用回溯式搜索)和查询索引(使用预期式搜索)。在这样一个系统中,一个空的回顾性查询只会在提交查询时只返回几个文档。另一方面,一个预期的查询会生成所有文档的实时流。只有少数预期查询的存在可能会在您的应用程序上产生重大负载。一般来说,如果你想要一个流水帐,实时推送所有发布的内容,最好是明确地对它进行编码。