Задать вопрос
@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 то нет поиска по окончаниям и вообще если вдруг в слове есть ошибки
  • Вопрос задан
  • 2729 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 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"
					}
				}
			}
		}
	}
}


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

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

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