@gulitskiy

Как искать фразы в elasticsearch с fuzzy?

у меня база еластик, там есть данные, и такая настройка индекеса

index_ru:
        type: custom
        tokenizer: standard
        filter: [word_delimiter, lowercase, stopwords_ru, stop, russian_morphology, english_morphology, unique]
        char_filter: [html_strip]
      search_ru:
        type: custom
        tokenizer: standard
        filter: [word_delimiter, lowercase, stopwords_ru, stop, russian_morphology, english_morphology, unique]
        char_filter: [html_strip]


делаю такой запрос на поиск

{
	"query": {
		"filtered": {
			"query": {
				"match": {
					"fullText": {
						"query": "российская федерация",
						"fuzziness": "AUTO",
						"operator":  "and",
					}
				}
			},
			"filter": {
				"range": {
					"pubDate": {
						"gte": "2015-08-03"
					}
				}
			}
		}
	}
}


работает хорошо, но он выводит все документы которые содержат оба слова в тексте независимо от расположения, а надо чтобы выводил только те в которых эти слова друг за другом.

Если использовать match_phrase то нет поиска по окончаниям и вообще если вдруг в слове есть ошибки
  • Вопрос задан
  • 2562 просмотра
Пригласить эксперта
Ответы на вопрос 1
@gulitskiy Автор вопроса
{
	"query": {
		"filtered": {
			"query": {
				"span_near" : {
					"clauses" : [
						{
							"span_multi": {
								"match": {
									"fuzzy": {
										"fullText": {
											"fuzziness": "AUTO",
											"value": "российская"
										}
									}
								}
							}
						},
						{
							"span_multi": {
								"match": {
									"fuzzy": {
										"fullText": {
											"fuzziness": "AUTO",
											"value": "федерация"
										}
									}
								}
							}
						}
					],
					"slop" : 2,
					"in_order" : true,
					"boost" : 20
				}
			},
			"filter": {
				"range": {
					"pubDate": {
						"gte": "2015-01-01"
					}
				}
			}
		}
	}
}


составил такой запрос, пока все работает как надо, по поводу производительности незнаю, пока мало документов для анализа.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 300 000 до 500 000 ₽
Сима-ленд Екатеринбург
от 120 000 до 250 000 ₽
Звук Москва
от 250 000 ₽
03 мая 2024, в 14:52
100000 руб./за проект
03 мая 2024, в 14:40
1000 руб./за проект