use of com.google.appengine.api.search.Cursor in project blogwt by billy1380.
the class SearchHelper method search.
public static String search(Collection<Long> resultsIds, String query, String indexName, String next, Integer count, String sortBy, SortDirectionType direction) {
Cursor cursor = null;
if (!SearchHelper.EMPTY_CURSOR.equals(next)) {
// build options and query
QueryOptions.Builder queryOptionsBuilder = QueryOptions.newBuilder().setCursor(next == null ? Cursor.newBuilder().build() : Cursor.newBuilder().build(next)).setLimit(count == null ? PagerHelper.DEFAULT_COUNT.intValue() : count.intValue()).setReturningIdsOnly(true);
if (sortBy != null) {
queryOptionsBuilder = queryOptionsBuilder.setSortOptions(SortOptions.newBuilder().addSortExpression(SortExpression.newBuilder().setExpression(sortBy).setDirection(direction == null || direction == SortDirectionType.SortDirectionTypeDescending ? SortExpression.SortDirection.DESCENDING : SortExpression.SortDirection.ASCENDING)).setLimit(SearchHelper.SORT_LIMIT).build());
}
QueryOptions options = queryOptionsBuilder.build();
com.google.appengine.api.search.Query apiQuery = com.google.appengine.api.search.Query.newBuilder().setOptions(options).build(query);
Results<ScoredDocument> matches = SearchHelper.getIndex(indexName).search(apiQuery);
String id;
if (resultsIds == null) {
resultsIds = new ArrayList<>();
} else {
resultsIds.clear();
}
for (ScoredDocument scoredDocument : matches) {
if ((id = scoredDocument.getId()) != null) {
resultsIds.add(Long.valueOf(id));
}
}
cursor = matches.getCursor();
}
return cursor == null ? SearchHelper.EMPTY_CURSOR : cursor.toWebSafeString();
}
use of com.google.appengine.api.search.Cursor in project pratilipi by Pratilipi.
the class SearchAccessorGaeImpl method searchPratilipi.
@Override
public DataListCursorTuple<Long> searchPratilipi(String query, PratilipiFilter pratilipiFilter, String cursorStr, Integer offset, Integer resultCount) {
SortOptions.Builder sortOptionsBuilder = SortOptions.newBuilder();
if (pratilipiFilter.getOrderByReadCount() != null) {
sortOptionsBuilder.addSortExpression(SortExpression.newBuilder().setExpression("readCount").setDirection(pratilipiFilter.getOrderByReadCount() ? SortExpression.SortDirection.ASCENDING : SortExpression.SortDirection.DESCENDING).setDefaultValueNumeric(0.0));
} else if (query != null && !query.isEmpty()) {
sortOptionsBuilder.setMatchScorer(MatchScorer.newBuilder());
sortOptionsBuilder.addSortExpression(SortExpression.newBuilder().setExpression(SortExpression.SCORE_FIELD_NAME).setDirection(SortExpression.SortDirection.DESCENDING).setDefaultValueNumeric(0.0));
sortOptionsBuilder.addSortExpression(SortExpression.newBuilder().setExpression("relevance").setDirection(SortExpression.SortDirection.DESCENDING).setDefaultValueNumeric(0.0));
} else {
sortOptionsBuilder.addSortExpression(SortExpression.newBuilder().setExpression("relevance").setDirection(SortExpression.SortDirection.DESCENDING).setDefaultValueNumeric(0.0));
}
SortOptions sortOptions = sortOptionsBuilder.setLimit(1000).build();
String searchQuery = pratilipiFilter.getType() == null ? "docType:Pratilipi" : "docType:Pratilipi-" + pratilipiFilter.getType().getName();
if (pratilipiFilter.getLanguage() != null)
searchQuery = searchQuery + " AND language:" + pratilipiFilter.getLanguage().getNameEn();
if (pratilipiFilter.getAuthorId() != null)
searchQuery = searchQuery + " AND author:" + pratilipiFilter.getAuthorId();
if (query != null && !query.isEmpty())
searchQuery = "( " + query + " ) AND " + searchQuery;
Results<ScoredDocument> result = search(searchQuery, sortOptions, cursorStr, offset, resultCount, "docId");
List<Long> pratilipiIdList = new ArrayList<>(result.getNumberReturned());
for (ScoredDocument document : result) pratilipiIdList.add(Long.parseLong(document.getOnlyField("docId").getAtom()));
Cursor cursor = resultCount == null || pratilipiIdList.size() < resultCount ? null : result.getCursor();
return new DataListCursorTuple<Long>(pratilipiIdList, cursor == null ? null : cursor.toWebSafeString(), result.getNumberFound());
}
use of com.google.appengine.api.search.Cursor in project teammates by TEAMMATES.
the class DataMigrationForOrphanedCommentSearchDocuments method getEntities.
@Override
protected List<Document> getEntities() {
List<Document> allResults = new ArrayList<>();
Cursor cursor = Cursor.newBuilder().build();
while (cursor != null) {
cursor = getMoreResults(cursor, allResults);
}
return allResults;
}
use of com.google.appengine.api.search.Cursor in project blogwt by billy1380.
the class SearchHelper method search.
public static String search(ITenancy tenancy, Collection<Long> resultsIds, String query, String indexName, String next, Integer count, String sortBy, SortDirectionType direction) {
Cursor cursor = null;
if (!SearchHelper.EMPTY_CURSOR.equals(next)) {
// build options and query
QueryOptions.Builder queryOptionsBuilder = QueryOptions.newBuilder().setCursor(next == null ? Cursor.newBuilder().build() : Cursor.newBuilder().build(next)).setLimit(count == null ? PagerHelper.DEFAULT_COUNT.intValue() : count.intValue()).setReturningIdsOnly(true);
if (sortBy != null) {
queryOptionsBuilder = queryOptionsBuilder.setSortOptions(SortOptions.newBuilder().addSortExpression(SortExpression.newBuilder().setExpression(sortBy).setDirection(direction == null || direction == SortDirectionType.SortDirectionTypeDescending ? SortExpression.SortDirection.DESCENDING : SortExpression.SortDirection.ASCENDING)).setLimit(SearchHelper.SORT_LIMIT).build());
}
QueryOptions options = queryOptionsBuilder.build();
com.google.appengine.api.search.Query apiQuery = com.google.appengine.api.search.Query.newBuilder().setOptions(options).build(query);
Results<ScoredDocument> matches = SearchHelper.getIndex(tenancy, indexName).search(apiQuery);
String id;
if (resultsIds == null) {
resultsIds = new ArrayList<>();
} else {
resultsIds.clear();
}
for (ScoredDocument scoredDocument : matches) {
if ((id = scoredDocument.getId()) != null) {
resultsIds.add(Long.valueOf(id));
}
}
cursor = matches.getCursor();
}
return cursor == null ? SearchHelper.EMPTY_CURSOR : cursor.toWebSafeString();
}
use of com.google.appengine.api.search.Cursor in project pratilipi by Pratilipi.
the class SearchAccessorGaeImpl method searchAuthor.
// AUTHOR Data
@Override
public DataListCursorTuple<Long> searchAuthor(String query, AuthorFilter authorFilter, String cursorStr, Integer offset, Integer resultCount) {
SortOptions.Builder sortOptionsBuilder = SortOptions.newBuilder();
if (authorFilter.getOrderByContentPublished() != null) {
sortOptionsBuilder.addSortExpression(SortExpression.newBuilder().setExpression("contentPublished").setDirection(authorFilter.getOrderByContentPublished() ? SortExpression.SortDirection.ASCENDING : SortExpression.SortDirection.DESCENDING).setDefaultValueNumeric(0.0));
} else if (query != null && !query.isEmpty()) {
sortOptionsBuilder.setMatchScorer(MatchScorer.newBuilder());
sortOptionsBuilder.addSortExpression(SortExpression.newBuilder().setExpression(SortExpression.SCORE_FIELD_NAME).setDirection(SortExpression.SortDirection.DESCENDING).setDefaultValueNumeric(0.0));
sortOptionsBuilder.addSortExpression(SortExpression.newBuilder().setExpression("contentPublished").setDirection(SortExpression.SortDirection.DESCENDING).setDefaultValueNumeric(0.0));
} else {
sortOptionsBuilder.addSortExpression(SortExpression.newBuilder().setExpression("contentPublished").setDirection(SortExpression.SortDirection.DESCENDING).setDefaultValueNumeric(0.0));
}
SortOptions sortOptions = sortOptionsBuilder.setLimit(1000).build();
String searchQuery = "docType:Author";
if (authorFilter.getLanguage() != null)
searchQuery = searchQuery + " AND language:" + authorFilter.getLanguage().getNameEn();
if (query != null && !query.isEmpty())
searchQuery = "( " + query + " ) AND " + searchQuery;
Results<ScoredDocument> result = search(searchQuery, sortOptions, cursorStr, offset, resultCount, "docId");
List<Long> authorIdList = new ArrayList<>(result.getNumberReturned());
for (ScoredDocument document : result) authorIdList.add(Long.parseLong(document.getOnlyField("docId").getAtom()));
Cursor cursor = resultCount == null || authorIdList.size() < resultCount ? null : result.getCursor();
return new DataListCursorTuple<Long>(authorIdList, cursor == null ? null : cursor.toWebSafeString(), result.getNumberFound());
}
Aggregations