Критерии Symfony Elasticsearch

0

Я хочу фильтровать критерии публикации:

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", но не ВСЕ

Как исправить мой код.

Теги:
elasticsearch

1 ответ

1
Лучший ответ

Замените addShould addMust.

Я также рекомендую использовать https://github.com/ongr-io/ElasticsearchBundle вместо https://github.com/FriendsOfSymfony/FOSElasticaBundle :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню