function it_build_parameters_for_similar_recipes(SlugGenerator $slugGenerator) { $criteria = new Criteria(0, false); $criteria->similarTo(new Name("John Collins")); $slugGenerator->generateFrom("John Collins")->willReturn('john-collins'); $this->createParameters($criteria)->shouldReturn(['index' => ElasticSearch::INDEX, 'type' => 'recipe', 'body' => ['from' => 0, 'size' => 10, 'query' => ['filtered' => ['query' => ['more_like_this' => ['fields' => ["steps.name", "description.taste"], 'ids' => ["john-collins"], 'min_term_freq' => 1, 'max_query_terms' => 25]]]]]]); }
/** * @param Criteria $criteria */ private function addSimilarRecipe(Criteria $criteria) { if ($criteria->lookForSimilarRecipes()) { $this->parameters['body']['query']['filtered']['query'] = ['more_like_this' => ['fields' => ["steps.name", "description.taste"], 'ids' => [$this->slugGenerator->generateFrom((string) $criteria->getSimilarToRecipeName())], 'min_term_freq' => 1, 'max_query_terms' => 25]]; } }
/** * @param Name $name * @return string */ private function generateFileName(Name $name) { return $this->generateFileNameFromSlug($this->slugGenerator->generateFrom((string) $name)); }
/** * @param Recipe $recipe */ public function removeRecipeFromIndex(Recipe $recipe) { $params = ['index' => ElasticSearch::INDEX, 'type' => 'recipe', 'id' => $this->slugGenerator->generateFrom((string) $recipe->getName())]; $this->client->delete($params); $this->client->indices()->refresh(); }