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


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

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

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