BAEL 6701 - MongoDB - Atlas Search using the Java Driver and Spring Data (#15069)
* research 1 * new search methods * first draft * removing old code * updated to parent-boot-3 * mongo review 2
This commit is contained in:
parent
89744aff6c
commit
0fc112e613
|
@ -11,13 +11,12 @@ import static com.mongodb.client.model.Projections.excludeId;
|
||||||
import static com.mongodb.client.model.Projections.fields;
|
import static com.mongodb.client.model.Projections.fields;
|
||||||
import static com.mongodb.client.model.Projections.include;
|
import static com.mongodb.client.model.Projections.include;
|
||||||
import static com.mongodb.client.model.Projections.metaSearchScore;
|
import static com.mongodb.client.model.Projections.metaSearchScore;
|
||||||
|
import static com.mongodb.client.model.search.SearchCollector.facet;
|
||||||
import static com.mongodb.client.model.search.SearchCount.total;
|
import static com.mongodb.client.model.search.SearchCount.total;
|
||||||
import static com.mongodb.client.model.search.SearchFacet.combineToBson;
|
|
||||||
import static com.mongodb.client.model.search.SearchFacet.numberFacet;
|
import static com.mongodb.client.model.search.SearchFacet.numberFacet;
|
||||||
import static com.mongodb.client.model.search.SearchFacet.stringFacet;
|
import static com.mongodb.client.model.search.SearchFacet.stringFacet;
|
||||||
import static com.mongodb.client.model.search.SearchOperator.compound;
|
import static com.mongodb.client.model.search.SearchOperator.compound;
|
||||||
import static com.mongodb.client.model.search.SearchOperator.numberRange;
|
import static com.mongodb.client.model.search.SearchOperator.numberRange;
|
||||||
import static com.mongodb.client.model.search.SearchOperator.of;
|
|
||||||
import static com.mongodb.client.model.search.SearchOperator.text;
|
import static com.mongodb.client.model.search.SearchOperator.text;
|
||||||
import static com.mongodb.client.model.search.SearchOptions.searchOptions;
|
import static com.mongodb.client.model.search.SearchOptions.searchOptions;
|
||||||
import static com.mongodb.client.model.search.SearchPath.fieldPath;
|
import static com.mongodb.client.model.search.SearchPath.fieldPath;
|
||||||
|
@ -150,18 +149,17 @@ public class MovieAtlasSearchService {
|
||||||
|
|
||||||
debug(pipeline);
|
debug(pipeline);
|
||||||
return collection.aggregate(pipeline)
|
return collection.aggregate(pipeline)
|
||||||
.into(new ArrayList<Document>());
|
.into(new ArrayList<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Document genresThroughTheDecades(String genre) {
|
public Document genresThroughTheDecades(String genre) {
|
||||||
List<Bson> pipeline = asList(
|
List<Bson> pipeline = asList(
|
||||||
searchMeta(of(
|
searchMeta(
|
||||||
new Document("facet",
|
facet(
|
||||||
new Document("operator",
|
|
||||||
text(
|
text(
|
||||||
fieldPath("genres"), genre
|
fieldPath("genres"), genre
|
||||||
)
|
),
|
||||||
).append("facets", combineToBson(asList(
|
asList(
|
||||||
stringFacet("genresFacet",
|
stringFacet("genresFacet",
|
||||||
fieldPath("genres")
|
fieldPath("genres")
|
||||||
).numBuckets(5),
|
).numBuckets(5),
|
||||||
|
@ -169,8 +167,8 @@ public class MovieAtlasSearchService {
|
||||||
fieldPath("year"),
|
fieldPath("year"),
|
||||||
asList(1900, 1930, 1960, 1990, 2020)
|
asList(1900, 1930, 1960, 1990, 2020)
|
||||||
)
|
)
|
||||||
)))
|
)
|
||||||
)),
|
),
|
||||||
searchOptions()
|
searchOptions()
|
||||||
.index(config.getFacetIndex())
|
.index(config.getFacetIndex())
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package com.baeldung.boot.atlassearch.web;
|
package com.baeldung.boot.atlassearch.web;
|
||||||
|
|
||||||
|
import static com.mongodb.client.model.search.SearchPath.fieldPath;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
|
@ -33,7 +35,7 @@ public class MovieAtlasSearchController {
|
||||||
|
|
||||||
@GetMapping("90s/{skip}/{limit}/with/{keywords}")
|
@GetMapping("90s/{skip}/{limit}/with/{keywords}")
|
||||||
Document getMoviesUsingScoreBoost(@PathVariable int skip, @PathVariable int limit, @PathVariable String keywords) {
|
Document getMoviesUsingScoreBoost(@PathVariable int skip, @PathVariable int limit, @PathVariable String keywords) {
|
||||||
return service.late90sMovies(skip, limit, keywords, SearchScore.boost(2));
|
return service.late90sMovies(skip, limit, keywords, SearchScore.boost(fieldPath("imdb.votes")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("90s/{skip}/{limit}/with/{keywords}")
|
@PostMapping("90s/{skip}/{limit}/with/{keywords}")
|
||||||
|
|
Loading…
Reference in New Issue