use of io.vertigo.dynamo.search_2_4.data.domain.Car in project vertigo by KleeGroup.
the class AbstractSearchManagerTest method testRemoveByQuery.
/**
* Test de requétage de l'index.
* La création s'effectue dans une seule transaction.
*/
@Test
public void testRemoveByQuery() {
index(false);
final long size = query("*:*");
Assert.assertEquals(carDataBase.size(), size);
// on compte les Peugeots
int nbPeugeot = 0;
for (final Car car : carDataBase.getAllCars()) {
if ("Peugeot".equals(car.getMake())) {
nbPeugeot++;
}
}
// On supprime toute les Peugeots
remove("MAKE:Peugeot");
final long resize = query("*:*");
Assert.assertEquals(carDataBase.size() - nbPeugeot, resize);
}
use of io.vertigo.dynamo.search_2_4.data.domain.Car in project vertigo by KleeGroup.
the class AbstractSearchManagerTest method testFilterFacetListByRangeAndTerm.
/**
* Test le facettage par range d'une liste.
* Et le filtrage par deux facettes term et range.
*/
@Test
public void testFilterFacetListByRangeAndTerm() {
index(true);
final long car2000To2005Count = carDataBase.getCarsBefore(2005) - carDataBase.getCarsBefore(2000);
final List<Car> peugeotCars = carDataBase.getCarsByMaker("peugeot");
final long peugeot2000To2005Count = before(peugeotCars, 2005) - before(peugeotCars, 2000);
final SearchQuery searchQuery = SearchQuery.builder(ListFilter.of("*:*")).withFacetStrategy(carFacetQueryDefinition, EMPTY_SELECTED_FACET_VALUES).build();
final FacetedQueryResult<Car, SearchQuery> result = searchManager.loadList(carIndexDefinition, searchQuery, null);
logResult(result);
// on applique une facette
Assert.assertEquals(car2000To2005Count, getFacetValueCount("FCT_YEAR_CAR", "2000-2005", result));
final SearchQuery searchQuery2 = SearchQuery.builder(ListFilter.of("*:*")).withFacetStrategy(createFacetQuery("FCT_YEAR_CAR", "2000-2005", result)).build();
final FacetedQueryResult<Car, SearchQuery> result2 = searchManager.loadList(carIndexDefinition, searchQuery2, null);
Assert.assertEquals(car2000To2005Count, result2.getCount());
logResult(result2);
// on applique une autre facette
Assert.assertEquals(peugeot2000To2005Count, getFacetValueCount("FCT_MAKE_CAR", "peugeot", result2));
final SearchQuery searchQuery3 = SearchQuery.builder(ListFilter.of("*:*")).withFacetStrategy(createFacetQuery("FCT_MAKE_CAR", "peugeot", result2)).build();
final FacetedQueryResult<Car, SearchQuery> result1 = searchManager.loadList(carIndexDefinition, searchQuery3, null);
Assert.assertEquals(peugeot2000To2005Count, (int) result1.getCount());
logResult(result1);
}
use of io.vertigo.dynamo.search_2_4.data.domain.Car in project vertigo by KleeGroup.
the class AbstractSearchManagerTest method testSortedClusterByFacetTerm.
/**
* Test le facettage par term d'une liste.
*/
@Test
public void testSortedClusterByFacetTerm() {
index(true);
final SearchQuery searchQuery = SearchQuery.builder(ListFilter.of("*:*")).withFacetClustering(makeFacetDefinition).build();
final DtListState listState = new DtListState(null, 0, carIndexDefinition.getIndexDtDefinition().getField("YEAR").getName(), true);
final FacetedQueryResult<Car, SearchQuery> result = searchManager.loadList(carIndexDefinition, searchQuery, listState);
// On vérifie qu'il existe une valeur pour chaque marques et que la première est bien la plus ancienne
final Map<String, Set<Car>> databaseCluster = new HashMap<>();
for (final Car car : carDataBase.getAllCars()) {
databaseCluster.computeIfAbsent(car.getMake().toLowerCase(Locale.FRENCH), k -> new TreeSet<>((e1, e2) -> e2.getYear().compareTo(e1.getYear()))).add(car);
}
Assert.assertEquals(databaseCluster.size(), result.getClusters().size());
for (final Entry<FacetValue, DtList<Car>> entry : result.getClusters().entrySet()) {
final String searchFacetLabel = entry.getKey().getLabel().getDisplay().toLowerCase(Locale.FRENCH);
final Car firstClusterCar = entry.getValue().get(0);
final Set<Car> carsByMake = databaseCluster.get(searchFacetLabel);
Assert.assertEquals(carsByMake.iterator().next().getId(), firstClusterCar.getId());
for (final Car car : entry.getValue()) {
Assert.assertEquals(searchFacetLabel, car.getMake().toLowerCase(Locale.FRENCH));
}
}
}
use of io.vertigo.dynamo.search_2_4.data.domain.Car in project vertigo by KleeGroup.
the class AbstractSearchManagerTest method testFilterFacetListByTwoTerms.
/**
* Test le facettage par term d'une liste.
* Et le filtrage par deux facettes.
*/
@Test
public void testFilterFacetListByTwoTerms() {
index(true);
final List<Car> peugeotCars = carDataBase.getCarsByMaker("peugeot");
final long peugeotContainsCuirCount = containsDescription(peugeotCars, "cuir");
// final long peugeotContainsSiegCount = carDataBase.containsDescription("cuir");
final SearchQuery searchQuery = SearchQuery.builder(ListFilter.of("*:*")).withFacetStrategy(carFacetQueryDefinition, EMPTY_SELECTED_FACET_VALUES).build();
final FacetedQueryResult<Car, SearchQuery> result = searchManager.loadList(carIndexDefinition, searchQuery, null);
// logResult(result);
// on applique une facette
Assert.assertEquals(peugeotCars.size(), getFacetValueCount("FCT_MAKE_CAR", "peugeot", result));
final SearchQuery searchQuery2 = SearchQuery.builder(ListFilter.of("*:*")).withFacetStrategy(createFacetQuery("FCT_MAKE_CAR", "peugeot", result)).build();
final FacetedQueryResult<Car, SearchQuery> result1 = searchManager.loadList(carIndexDefinition, searchQuery2, null);
Assert.assertEquals(peugeotCars.size(), (int) result1.getCount());
logResult(result1);
// on applique une autre facette
Assert.assertEquals(peugeotContainsCuirCount, getFacetValueCount("FCT_DESCRIPTION_CAR", "cuir", result1));
final SearchQuery searchQuery3 = SearchQuery.builder(ListFilter.of("*:*")).withFacetStrategy(createFacetQuery("FCT_DESCRIPTION_CAR", "cuir", result1)).build();
final FacetedQueryResult<Car, SearchQuery> result2 = searchManager.loadList(carIndexDefinition, searchQuery3, null);
Assert.assertEquals(peugeotContainsCuirCount, (int) result2.getCount());
logResult(result2);
}
use of io.vertigo.dynamo.search_2_4.data.domain.Car in project vertigo by KleeGroup.
the class CarSearchLoader method getTaskLoadCarList.
private TaskDefinition getTaskLoadCarList(final SearchChunk<Car> searchChunk) {
final Domain doCarList = definitionSpace.resolve("DO_DT_CAR_DTC", Domain.class);
final String sql = searchChunk.getAllURIs().stream().map(uri -> uri.getId().toString()).collect(Collectors.joining(", ", "select * from CAR where ID in (", ")"));
return TaskDefinition.builder("TK_LOAD_ALL_CARS").withEngine(TaskEngineSelect.class).withRequest(sql).withPackageName(TaskEngineSelect.class.getPackage().getName()).withOutRequired("dtc", doCarList).build();
}
Aggregations