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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽