Ensure `findSimilar(long, int)` respects maxResults
The only way this can happen with a MoreLikeThis-based implementation is if we somehow end up with several distinct recipes with exactly the same content, so this test is more for my future self when trying to make this faster.
- Id
- 1dc28ea7cc8cf10056a548f6c7752227627a8c0d
- Author
- Caio
- Commit time
- 2019-04-11T09:13:16+02:00
Modified src/main/java/co/caio/cerberus/search/SearcherImpl.java
var builder = new SearchResult.Builder();
int totalHits = 0;
- for (int i = 0; i < result.scoreDocs.length; i++) {
+ for (int i = 0; i < result.scoreDocs.length && totalHits <= maxResults; i++) {
Document doc = indexSearcher.doc(result.scoreDocs[i].doc);
long foundRecipeId = doc.getField(RECIPE_ID).numericValue().longValue();
Modified src/test/java/co/caio/cerberus/search/SearcherTest.java
@Test
void similarToRecipeIdNeverIncludesSelf() {
+ final int maxResults = 100;
Util.getSampleRecipes()
- .limit(10)
.forEach(
sampleRecipe -> {
- var similar = searcher.findSimilar(sampleRecipe.recipeId(), 100);
+ var similar = searcher.findSimilar(sampleRecipe.recipeId(), maxResults);
- assertTrue(similar.totalHits() > 0);
+ assertTrue(similar.totalHits() > 0 && similar.totalHits() <= maxResults);
assertEquals(-1, similar.recipeIds().indexOf(sampleRecipe.recipeId()));
});
}