0
votes

I'm reading the documentation on full text search api (java) in google app engine at https://developers.google.com/appengine/docs/java/search/overview. They have example on getting the index:

public Index getIndex() {
      IndexSpec indexSpec = IndexSpec.newBuilder()
          .setName("myindex")
          .setConsistency(Consistency.PER_DOCUMENT)
          .build();
      return SearchServiceFactory.getSearchService().getIndex(indexSpec);
}

How about on creating an index? How to create one?

Thanks

2

2 Answers

1
votes

You just did. You just created one.

public class IndexSpec

Represents information about an index. This class is used to fully specify the index you want to retrieve from the SearchService. To build an instance use the newBuilder() method and set all required parameters, plus optional values different than the defaults.

https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/search/IndexSpec

You can confirm this by looking at the SearchService

SearchService is also responsible for creating new indexes. For example:
 SearchService searchService = SearchServiceFactory.getSearchService();
  index = searchService.getIndex(IndexSpec.newBuilder().setName("myindex"));

https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/search/SearchService

Anyway, It seems your code will create a new index if it doesn't exist. That's what the docs suggest:

 // Get the index. If not yet created, create it.
  Index index = searchService.getIndex(
  IndexSpec.newBuilder()
      .setIndexName("indexName")
      .setConsistency(Consistency.PER_DOCUMENT));

https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/search/Index

Now, what happens if you run the code again and change the Consistency? Do you have the same index with a different consistency? Is the index overwritten? I don't know. I would use the SearchService to lookup existing indexes instead of using code that might create them just to avoid trying to get an index in my code but changing the specs inadvertantly.

0
votes

An Index is implicitly created when a document is written. Consistency is an attribute of the index, i.e. you can't have two indexes of the same name with different consistencies.