Задать вопрос
@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?
  • Вопрос задан
  • 364 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@iva3682
лучше использовать query_string и строку $text бить на токены перед этим, удаляя стоп-слова, составляя запрос вида word1 AND word2 AND word3 и так далее. Можно скопбинировать с match_phrase. Также непонятно какой у Вас маппинг, как происходит токенизация внутри эластика чтобы искать по основе слова (чтобы находил по запросу ВЕДРО варианты с разным окончанием, например ВЕДРА). Чтобы искать по точному совпадению если поле article имеет числовой вид или keyword то можно использовать term, если тип text то использовать match, при этом анализатор не должен изменять значение поля.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы