Задать вопрос
@alehandroWEB

Как сделать точный и не точный поиск в Elasticsearch?

На данный момент есть такой запрос:
$response = $client->search([
			'index' => 'shop',
			'type' => 'products',
			'body' => [
				'_source' => ['id'],
				'query' => [
					'bool' => [
						'must' => [
							'multi_match' => [
								'query' => $text,
								'fuzziness' => 'auto',
								'operator' => 'and',
								'fields' => ['name', 'description']
							]
						]
					]
				]
			]
		]);

он ищет по не точным совпадениям по полям name и description. Как добавить поиск по точному совпадению по полю article?
  • Вопрос задан
  • 367 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@iva3682
лучше использовать query_string и строку $text бить на токены перед этим, удаляя стоп-слова, составляя запрос вида word1 AND word2 AND word3 и так далее. Можно скопбинировать с match_phrase. Также непонятно какой у Вас маппинг, как происходит токенизация внутри эластика чтобы искать по основе слова (чтобы находил по запросу ВЕДРО варианты с разным окончанием, например ВЕДРА). Чтобы искать по точному совпадению если поле article имеет числовой вид или keyword то можно использовать term, если тип text то использовать match, при этом анализатор не должен изменять значение поля.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽