Google App Engine:未找到 API 程序包 'search' 或调用 'IndexDocument()'

Google App Engine: The API package 'search' or call 'IndexDocument()' was not found

使用 Google App Engine 的搜索 API,我试图将一些文档编入测试索引。我正在使用 Google App Engine 官方文档中给出的代码示例。 但是当我尝试 运行 下面的代码片段时。当我尝试通过 index.put:

放置文档时出现以下错误

Exception in thread "main" com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'search' or call 'IndexDocument()' was not found. at com.google.apphosting.api.ApiProxy.get(ApiProxy.java:179) at com.google.apphosting.api.ApiProxy.get(ApiProxy.java:177) at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:88) at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:88) at com.google.appengine.api.search.FutureHelper.getInternal(FutureHelper.java:73) at com.google.appengine.api.search.FutureHelper.quietGet(FutureHelper.java:32) at com.google.appengine.api.search.IndexImpl.put(IndexImpl.java:486) at test.service.SearchingService.indexADocument(SearchingService.java:52)

这是代码片段:

 IndexSpec indexSpec = IndexSpec.newBuilder().setName(indexName).build();

          SearchService service = SearchServiceFactory.getSearchService(
                   SearchServiceConfig.newBuilder().setDeadline(10.0).setNamespace("geeky").build());
          Index index = service.getIndex(indexSpec);



          final int maxRetry = 3;
          int attempts = 0;
          int delay = 2;
          while (true) {
            try {

              index.put(document); // ERROR!!!!!!!!!!
            } catch (PutException e) {
              if (StatusCode.TRANSIENT_ERROR.equals(e.getOperationResult().getCode())
                  && ++attempts < maxRetry) { // retrying
                Thread.sleep(delay * 1000);
                delay *= 2; // easy exponential backoff
                continue;
              } else {
                throw e; // otherwise throw
              }
            }
            break;
          }

        }

我正在将 appengine-java-sdk-1.9.18 与 Eclipse Kepler 一起使用。我 运行 本地开发服务器上的代码或在 appspot 上托管的生产中的代码都没有关系。我犯了同样的错误。 我已经在 eclipse 中通过我的 google 帐户的身份验证,并且能够通过 eclipse 将我的代码投入生产。有人以前见过这个错误吗?

因此,在尝试调用搜索 API 时,几乎没有什么事情需要注意。我设置中的第一个错误是我使用的是旧版本的 GAE SDK (1.9.18)。

修复后,我在尝试索引文档时仍然出错。我有从 appengine 上下文调用的搜索查询函数,但我的索引导致了同样的错误,因为它 运行 来自 'main' 函数。人们应该始终 运行 应用引擎上下文中搜索 API 的所有功能。