Я хочу фильтровать критерии публикации:
SELECT * FROM posts WHERE (title LIKE '%AA%' OR subtitile LIKE '%BB%') AND category = 'Car'
Что я пытаюсь:
$finder = $this->container->get('fos_elastica.finder.website.article');
$boolQuery = new \Elastica_Query_Bool();
$fieldQuery = new \Elastica_Query_Text();
$fieldQuery->setFieldQuery('title', '*keyword*');
$fieldQuery->setFieldParam('title', 'analyzer', 'my_analyzer');
$boolQuery->addShould($fieldQuery);
$fieldQuery1 = new \Elastica_Query_Text();
$fieldQuery1->setFieldQuery('subtitle', '*keyword*');
$fieldQuery1->setFieldParam('subtitle', 'analyzer', 'my_analyzer');
$boolQuery->addShould($fieldQuery1);
$fieldQuery2 = new \Elastica_Query_Text();
$fieldQuery2->setFieldQuery('category', 'Car');
$boolQuery->addMust($fieldQuery2);
$data = $finder->find($boolQuery);
Я получаю ВСЕ сообщение категории "Автомобиль", и некоторые из этих сообщений содержат "ключевое слово", но мне нужно иметь только сообщение категории "Автомобиль", какое ключевое слово "ключевое слово" ключевого слова "contais", но не ВСЕ
Как исправить мой код.
Замените addShould
addMust
.
Я также рекомендую использовать https://github.com/ongr-io/ElasticsearchBundle вместо https://github.com/FriendsOfSymfony/FOSElasticaBundle :)