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

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

Войти через центр авторизации
Похожие вопросы