Database/NOSQL 5

Elastic Search - 텍스트 분석 (5)

이제 실질적으로 검색을 위한 사전작업을 해야한다. 우선 검색 정확도(3) 포스팅에서 언급한 역인덱스라는것을 기억하는가 엘라스틱 서치는 역 인덱스를 통해 단어들을 term 으로 분리하고 이 term이 어디에 존재하는지 기록한다.이 역인덱스를 하는 과정에서 텍스트를 분석할때Analyzer를 사용하고 그 안엔 Character Filter, Tokenizer, Token Filter 가 있다고 했었다.다시한번 간단하게 설명해보자면Character Filter 는 맨 처음 들어오는 단어들에 대해 특정 가공을 한다.Tokenizer 는 이 들어온 단어들을 term으로 나눈다.Token Filter 는 이 분리된 term들을 가공하여 역 인덱스를 한다. 아무것도 설정 안한 엘라스틱서치가 해당 단어를 어떻게 분석하..

Database/NOSQL 2024.04.16

Elastic Search - 검색 정확도(3)

이전 포스팅에서 우린 정확도에 대한 문제를 직면했다.이 정확도에 대해 자세히 알아보고 어떻게 쿼리를 작성해야할지 알아보자.엘라스틱 서치의 검색 결과 리스폰스를 보면 _score 필드를 볼 수 있다."max_score": 4.603986, "hits": [ { "_index": "set_of_search_index", "_id": "3", "_score": 4.603986, "_source": { "message": "메종키츠네 폭스헤드 우먼즈 반팔티 블랙 AW00103KJ0005-P199" } ..

Database/NOSQL 2024.04.04

Elastic Search - 기초 쿼리 (2)

검색을 할때 여러 조건들을 넣어야 하는데 1 단원에 나온 내용으론 기능이 제한적이라bool 쿼리를 사용하고 그안에 다른 쿼리들을 넣는 식으로 복합적인 쿼리를 사용해야 한다.나 또한 상품 검색 기능을 만들때 이 부분에 대해 제대로 숙지하지 않고 무작정 검색 기능을 개발하여 내 뜻대로 원하는 결과가 나오지 않았는데 이 부분에 대해 어느정도 이해하고 넘어가면 검색 기능을 만들때 분명 무엇이 잘못되었는지 감이라도 쉽게 잡을수 있다. bool 쿼리에는 4개의 인자가 있다.must 쿼리가 참인 도큐먼트들을 검색 must_not 쿼리가 거짓인 도큐먼트들을 검색should검색 결과 중 이 쿼리에 해당하는 도큐먼트의 점수를 높인다filter 쿼리가 참인 도큐먼트를 검색하지만 스코어를 계산하지 않는다 must 보다 검..

Database/NOSQL 2024.04.04

Elastic Search - 기초 쿼리 (1)

해당 포스팅은공식 문서 내용을 정리하면서 연습하는 포스팅 입니다.그리고 이 포스팅의 궁극적인 목표는 이커머스에 사용되는 검색 기능을 만드는 것이다.자 시작해보자. match_all - 별다른 조건 없이 해당 인덱스의 모든 도큐먼트를 검색match - 풀 텍스트 검색에 가장 많이 사용되는 쿼리 해당 쿼리에 검색어를 집어 넣게 되면 디폴트로 OR 조건으로 검색되어 해당 단어가 포함되어 있는 모든 문서를 검색 And 조건으로 검색하고 싶다면 operator 옵션을 사용해야하고 아래와 같이 문법이 조금 달라진다. match_phrase 공백을 포함해 정확히 일치하는 내용을 검색하기 위해선 위의 쿼리를 사용한다. 해당 쿼리는 입력된 검색 순서까지 고려하여 검색을 수행한다.아래 그림과 같이 말이다그리..

Database/NOSQL 2024.04.04