Index (Google App Engine API for Java)

com.google.appengine.api.search

Interface Index



  • public interface Index
    An Index allows synchronous and asynchronous adding and deleting of Documents as well as synchronous and asynchronous searching for Documents for a given Query. The following code fragment shows how to add documents, then search the index for documents matching a query.

      // Get the SearchService for the default namespace
      SearchService searchService = SearchServiceFactory.getSearchService();
      // Get the index. If not yet created, create it.
      Index index = searchService.getIndex(
          IndexSpec.newBuilder().setIndexName("indexName"));
    
      // Create a document.
      Document document = Document.newBuilder()
          .setId("documentId")
          .addField(Field.newBuilder().setName("subject").setText("my first email"))
          .addField(Field.newBuilder().setName("body")
               .setHTML("<html>some content here</html>")
          .build();
    
      // Put the document.
      try {
        index.put(document);
      } catch (PutException e) {
        if (StatusCode.TRANSIENT_ERROR.equals(e.getOperationResult().getCode())) {
          // retry putting document
        }
      }
    
      // Query the index.
      try {
        Results<ScoredDocument> results =
            index.search(Query.newBuilder().build("subject:first body:here"));
    
        // Iterate through the search results.
        for (ScoredDocument document : results) {
          // display results
        }
      } catch (SearchException e) {
        if (StatusCode.TRANSIENT_ERROR.equals(e.getOperationResult().getCode())) {
          // retry
        }
      }
    

    • Method Detail

      • getName

        java.lang.String getName()
        Returns:
        the name of the index
      • getNamespace

        java.lang.String getNamespace()
        Returns:
        the namespace of the index name
      • deleteAsync

        java.util.concurrent.Future<java.lang.Void> deleteAsync(java.lang.String... documentId)
        See Also:
        delete(String...)
      • deleteAsync

        java.util.concurrent.Future<java.lang.Void> deleteAsync(java.lang.Iterable<java.lang.String> documentIds)
        See Also:
        delete(String...)
      • deleteSchemaAsync

        @Deprecated
        java.util.concurrent.Future<java.lang.Void> deleteSchemaAsync()
        Deprecated. as of 1.7.4
        See Also:
        deleteSchema()
      • delete

        void delete(java.lang.String... documentIds)
        Delete documents for the given document ids from the index if they are in the index.
        Parameters:
        documentIds - the ids of documents to delete
        Throws:
        DeleteException - if there is a failure in the search service deleting documents
        java.lang.IllegalArgumentException - if some document id is invalid
      • delete

        void delete(java.lang.Iterable<java.lang.String> documentIds)
        See Also:
        delete(String...)
      • deleteSchema

        @Deprecated
        void deleteSchema()
        Deprecated. as of 1.7.4
        Delete the schema from the index. A possible use may be that there are typed fields which are no longer required. Make sure that you re-index some or all of your documents to enable search again. A sample of documents is required that uses named fields to rebuild the schema.
        Throws:
        DeleteException - if there is a failure in the search service deleting the schema
      • put

        PutResponse put(Document... documents)
        Put the documents into the index, updating any document that is already present.
        Parameters:
        documents - the documents to put into the index
        Returns:
        an PutResponse containing the result of the put operations indicating success or failure as well as the document ids. The search service will allocate document ids for documents which have none provided
        Throws:
        PutException - if there is a failure in the search service putting documents
        java.lang.IllegalArgumentException - if some document is invalid or more than IndexChecker#MAXIMUM_DOCS_PER_REQUEST documents requested to be put into the index
      • get

        Document get(java.lang.String documentId)
        Gets a Document for the given document Id.
        Parameters:
        documentId - the identifier for the document to retrieve
        Returns:
        the associated Document. can be null
      • search

        Results<ScoredDocument> search(Query query)
        Search the index for documents matching the query. The query must specify a query string, and optionally, how many documents are requested, how the results are to be sorted, scored and which fields are to be returned.
        Parameters:
        query - the fully specified Query object
        Returns:
        a Results containing ScoredDocuments
        Throws:
        java.lang.IllegalArgumentException - if the query is invalid
        SearchQueryException - if the query string is invalid
        SearchException - if there is a failure in the search service performing the search
      • getRange

        GetResponse<Document> getRange(GetRequest request)
        Get an index's documents, in document Id order.
        Parameters:
        request - contains various options restricting which documents are returned.
        Returns:
        a GetResponse containing a list of documents from the index
        Throws:
        java.lang.IllegalArgumentException - if the get request is invalid