Search in sources :

Example 6 with IndexSpec

use of com.google.appengine.api.search.IndexSpec in project teammates by TEAMMATES.

the class SearchManager method getIndex.

private static Index getIndex(String indexName) {
    Map<String, Index> indicesTable = getIndicesTable();
    Index index = indicesTable.get(indexName);
    if (index == null) {
        IndexSpec indexSpec = IndexSpec.newBuilder().setName(indexName).build();
        index = SearchServiceFactory.getSearchService().getIndex(indexSpec);
        indicesTable.put(indexName, index);
    }
    return index;
}
Also used : IndexSpec(com.google.appengine.api.search.IndexSpec) Index(com.google.appengine.api.search.Index)

Example 7 with IndexSpec

use of com.google.appengine.api.search.IndexSpec in project java-docs-samples by GoogleCloudPlatform.

the class SearchOptionServlet method doSearch.

private Results<ScoredDocument> doSearch() {
    String indexName = SEARCH_INDEX;
    // [START search_with_options]
    try {
        // Build the SortOptions with 2 sort keys
        SortOptions sortOptions = SortOptions.newBuilder().addSortExpression(SortExpression.newBuilder().setExpression("price").setDirection(SortExpression.SortDirection.DESCENDING).setDefaultValueNumeric(0)).addSortExpression(SortExpression.newBuilder().setExpression("brand").setDirection(SortExpression.SortDirection.DESCENDING).setDefaultValue("")).setLimit(1000).build();
        // Build the QueryOptions
        QueryOptions options = QueryOptions.newBuilder().setLimit(25).setFieldsToReturn("model", "price", "description").setSortOptions(sortOptions).build();
        // A query string
        String queryString = "product: coffee roaster AND price < 500";
        // Build the Query and run the search
        Query query = Query.newBuilder().setOptions(options).build(queryString);
        IndexSpec indexSpec = IndexSpec.newBuilder().setName(indexName).build();
        Index index = SearchServiceFactory.getSearchService().getIndex(indexSpec);
        Results<ScoredDocument> result = index.search(query);
        return result;
    } catch (SearchException e) {
    // handle exception...
    }
    // [END search_with_options]
    return null;
}
Also used : IndexSpec(com.google.appengine.api.search.IndexSpec) ScoredDocument(com.google.appengine.api.search.ScoredDocument) Query(com.google.appengine.api.search.Query) SearchException(com.google.appengine.api.search.SearchException) Index(com.google.appengine.api.search.Index) QueryOptions(com.google.appengine.api.search.QueryOptions) SortOptions(com.google.appengine.api.search.SortOptions)

Example 8 with IndexSpec

use of com.google.appengine.api.search.IndexSpec in project java-docs-samples by GoogleCloudPlatform.

the class Utils method indexADocument.

/**
 * Put a given document into an index with the given indexName.
 * @param indexName The name of the index.
 * @param document A document to add.
 * @throws InterruptedException When Thread.sleep is interrupted.
 */
// [START putting_document_with_retry]
public static void indexADocument(String indexName, Document document) throws InterruptedException {
    IndexSpec indexSpec = IndexSpec.newBuilder().setName(indexName).build();
    Index index = SearchServiceFactory.getSearchService().getIndex(indexSpec);
    final int maxRetry = 3;
    int attempts = 0;
    int delay = 2;
    while (true) {
        try {
            index.put(document);
        } catch (PutException e) {
            if (StatusCode.TRANSIENT_ERROR.equals(e.getOperationResult().getCode()) && ++attempts < maxRetry) {
                // retrying
                Thread.sleep(delay * 1000);
                // easy exponential backoff
                delay *= 2;
                continue;
            } else {
                // otherwise throw
                throw e;
            }
        }
        break;
    }
}
Also used : IndexSpec(com.google.appengine.api.search.IndexSpec) PutException(com.google.appengine.api.search.PutException) Index(com.google.appengine.api.search.Index)

Example 9 with IndexSpec

use of com.google.appengine.api.search.IndexSpec in project java-docs-samples by GoogleCloudPlatform.

the class MultitenancyServlet method doGet.

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    String namespace;
    PrintWriter out = resp.getWriter();
    out.println("Code Snippets -- not yet fully runnable as an app");
    // [START temp_namespace]
    // Set the namepace temporarily to "abc"
    String oldNamespace = NamespaceManager.get();
    NamespaceManager.set("abc");
    try {
    // ... perform operation using current namespace ...
    } finally {
        NamespaceManager.set(oldNamespace);
    }
    // [START per_user_namespace]
    if (com.google.appengine.api.NamespaceManager.get() == null) {
        // Assuming there is a logged in user.
        namespace = UserServiceFactory.getUserService().getCurrentUser().getUserId();
        NamespaceManager.set(namespace);
    }
    // [END per_user_namespace]
    String value = "something here";
    // [START ns_memcache]
    // Create a MemcacheService that uses the current namespace by
    // calling NamespaceManager.get() for every access.
    MemcacheService current = MemcacheServiceFactory.getMemcacheService();
    // stores value in namespace "abc"
    oldNamespace = NamespaceManager.get();
    NamespaceManager.set("abc");
    try {
        // stores value in namespace “abc”
        current.put("key", value);
    } finally {
        NamespaceManager.set(oldNamespace);
    }
    // [END ns_memcache]
    // [START specific_memcache]
    // Create a MemcacheService that uses the namespace "abc".
    MemcacheService explicit = MemcacheServiceFactory.getMemcacheService("abc");
    // stores value in namespace "abc"
    explicit.put("key", value);
    // [END specific_memcache]
    // [START searchns]
    // Set the current namespace to "aSpace"
    NamespaceManager.set("aSpace");
    // Create a SearchService with the namespace "aSpace"
    SearchService searchService = SearchServiceFactory.getSearchService();
    // Create an IndexSpec
    IndexSpec indexSpec = IndexSpec.newBuilder().setName("myIndex").build();
    // Create an Index with the namespace "aSpace"
    Index index = searchService.getIndex(indexSpec);
    // [END searchns]
    // [START searchns_2]
    // Create a SearchServiceConfig, specifying the namespace "anotherSpace"
    SearchServiceConfig config = SearchServiceConfig.newBuilder().setNamespace("anotherSpace").build();
    // Create a SearchService with the namespace "anotherSpace"
    searchService = SearchServiceFactory.getSearchService(config);
    // Create an IndexSpec
    indexSpec = IndexSpec.newBuilder().setName("myindex").build();
    // Create an Index with the namespace "anotherSpace"
    index = searchService.getIndex(indexSpec);
// [END searchns_2]
}
Also used : MemcacheService(com.google.appengine.api.memcache.MemcacheService) IndexSpec(com.google.appengine.api.search.IndexSpec) SearchService(com.google.appengine.api.search.SearchService) Index(com.google.appengine.api.search.Index) SearchServiceConfig(com.google.appengine.api.search.SearchServiceConfig) PrintWriter(java.io.PrintWriter)

Aggregations

Index (com.google.appengine.api.search.Index)9 IndexSpec (com.google.appengine.api.search.IndexSpec)9 Document (com.google.appengine.api.search.Document)2 PrintWriter (java.io.PrintWriter)2 MemcacheService (com.google.appengine.api.memcache.MemcacheService)1 PutException (com.google.appengine.api.search.PutException)1 Query (com.google.appengine.api.search.Query)1 QueryOptions (com.google.appengine.api.search.QueryOptions)1 ScoredDocument (com.google.appengine.api.search.ScoredDocument)1 SearchException (com.google.appengine.api.search.SearchException)1 SearchService (com.google.appengine.api.search.SearchService)1 SearchServiceConfig (com.google.appengine.api.search.SearchServiceConfig)1 SortOptions (com.google.appengine.api.search.SortOptions)1 Test (org.junit.Test)1