본문 바로가기
Engineering WIKI/Book

[일래스틱 스택 6 입문] 3장. 유사도 검색

by wonos 2023. 9. 17.
 

[일래스틱 스택 6 입문] 1장. 일래스틱 소개

일래스틱서치 개념 및 사용 이유 일래스틱서치는 실시간 분산 검색 및 분석 엔진으로, 수평적으로 확장할 수 있다. 또한 일래스틱 스택의 핵심으로, 중앙에서 데이터를 저장해 다양한 문제를 해

wonos.tistory.com

 

 

[일래스틱 스택 6 입문] 2장. 일래스틱서치 시작하기

[일래스틱 스택 6 입문] 1장. 일래스틱 소개 일래스틱서치 개념 및 사용 이유 일래스틱서치는 실시간 분산 검색 및 분석 엔진으로, 수평적으로 확장할 수 있다. 또한 일래스틱 스택의 핵심으로,

wonos.tistory.com


  • 일래스틱서치의 핵심이라 할 수 있는 검색 기능
  • 분석기 구조
    • 문자 필터 : 0개 이상
    • 토크나이저(Tokenizer) : 정확히 1개
    • 토큰 필터(Token filters) : 0개 이상
  • 문자 필터
    • 분석기를 0개 이상의 문자 필터로 구성할 수 있다. 문자 필터는 입력 필드의 문자열에서 동작한다.
  • 토크나이저
    • 분석기는 정확히 하나의 토크나이저를 갖고 있다. 토크나이저는 문자열을 받아 토큰 스트림을 생성하는 역할을 담당한다. 해당 토큰은 역색인을 만들 때 사용한다. 토큰은 단어와 같다고 봐도 무방하다.
    • 표준 토크나이저 (standard) : 문자열을 공백 문자와 구두점을 기반으로 분해
    • 토큰 필터 : 분석기에는 0개 이상의 토큰 필터가 존재할 수 있다.
      • 소문자 토큰 필터(Lowercase Token Filter) : 입력 데이터의 모든 토큰을 소문자로 치환한다.
      • 불용어 토큰 필터 (Stop Token Filter) : 문맥에서 의미 없는 단어를 제거한다. 예를 들어, 영어 문장에서는 is, a, an, the와 같이 관산, 전치사, 조사, 접속사 등이 불용어에 해당된다.
  • 날짜 범위 : 날짜는 기본적으로 정렬되기 때문에 Range 쿼리를 날짜 필드에도 적용할 수 있다.
  • Exists 쿼리 : 특정 필드에 널 값과 공백이 아닌 레코드만 가져오고 싶을 때 유용하게 사용
GET /amazon_products/products/_search
{
	"query" : {
		"exists" : {
			"field" : "description"
			}
		}
	}
}
  • 특정 필드의 스코어 높이기
    • 전자 상거래 웹 애플리케이션에서는 종종 사용자가 일부 항목을 검색하려고 할 때 특정 키워드를 찾을 수 있다. 제목 필드가 설명 필드가 더 중요할 경우가 있다. 제목 필드에 검색 용어가 여러 번 나온 값이 검색어와 더 관련성이 높은 결과 값일 것이다. 이처럼 특정 필드와 일치하는 항목을 발견하면 도큐먼트 스코어를 높일 방법이 있다. 제목 필드의 중요성을 설명 필드보다 3배로 만들어 보자.
GET /amazon_products/products/_search
{
 "query" : {
		"multi_match" : {
			"query" : "monitor aquarium",
			"fields" : ["title^3", "description"]
		}
	} 
}