Elastic search에서 indexing(색인화)은 index(색인)의 문서를 추가, 업데이트 또는 삭제하는 프로세스를 말한다.
인덱싱 프로세스 중에 각 문서는 반전된 인덱스로 변환되어 검색 쿼리를 기반으로 관련 문서를 빠르게 검색하고 검색할 수 있다.
다음 단계에서는 Elastic Search의 인덱싱 프로세스에 대해 설명한다.
Inverted index(반전 인덱스)는 Elastic search와 같은 검색 엔진이 데이터를 효율적으로 저장하고 검색하기 위해 사용하는 데이터 구조로, 문서와 문서에 포함된 용어 사이의 관계를 반전시키기 때문에 반전된 색인이라고 함.
inverted index에서 문서 집합의 각 고유 용어는 index의 키이며, 해당 값은 해당 용어를 포함하는 문서 목록이다.
이를 통해 Elastic Search는 특정 용어가 포함된 문서를 효율적으로 검색하고 관련 문서를 검색할 수 있음.
예를 들어 다음과 같이 문서 3개가 들어있는 문서 집합에 대해 inverted index를 수행한다면,
Document 1: "Elasticsearch is a distributed search engine."
Document 2: "Elasticsearch provides real-time search and analytics."
Document 3: "Elasticsearch is open source."
이런 방식으로, 각 용어를 해당 용어가 포함된 문서에 매핑하며, 이를 통해 Elastic Search는 특정 용어가 포함된 문서를 빠르게 검색하고 관련 문서를 검색할 수 있게 된다.
또한, inverted index는 새 문서가 추가되거나 기존 문서가 업데이트될 때마다 지속적으로 업데이트되므로 검색 결과가 정확하고 최신 상태로 유지하게 된다.
Elastic Search에서 문서 유사도을 계산하려면 포함된 용어를 기준으로 두 개 이상의 문서 간 유사성을 비교해야 한다. 이것은 문서 클러스터링, 추천 시스템 및 중복 문서 탐지와 같은 다양한 작업에 유용할 수 있음.
자연어 처리에 관련된 부분인데, 지금은 간단한 개념만 짚고 넘어가도록 하겠다.
(왜냐? 당장 안필요하니까. 글고 넘 어려움ㅠ)
코사인 유사도 (Cosine Similarity): 두 벡터 사이의 유사성을 측정하는 데 흔히 사용되는 척도이며, 용어 빈도 벡터로 표현되는 문서에 적용할 수 있다. 두 문서 사이의 코사인 유사성은 용어 주파수 벡터 (term frequency) 사이의 각도의 코사인으로 산출됨.
자카드 유사도 (Jaccard Similarity): 두 집합 사이의 유사성을 나타내는 또 다른 척도이며, 용어 집합으로 표시되는 문서에 적용할 수 있습니다. 두 문서 사이의 자카드 유사성은 교차점의 크기를 용어 집합의 결합 크기로 나눈 것. (무슨 말인지 잘 모르겠다)
유클리드 거리 (Euclidean Distance): 다차원 공간에서 두 점 사이의 거리를 측정한 것으로 용어 주파수 벡터로 표현되는 문서에 적용할 수 있음. 두 문서 사이의 유클리드 거리는 용어 주파수 차이의 제곱합의 제곱근이다.
fun, cool, sexy