스터디/검색 엔진

    [검색엔진] Elasticsearch - 인덱스 교체 전략

    개요Elasticsearch를 검색 엔진으로 사용하기 위해서는 다운 타임이 없어야 한다. 또한 데이터 정합성, 실시간 데이터 반영을 챙기기 위해서는 동적, 정적 색인을 진행한다.동적 색인이란, 실시간 데이터 반영을 위해 색인을 위한 데이터의 변경사항이 발생할 때마다 감지하여 ES에 색인시키는 동작을 의미한다. 정적 색인이란, 데이터 정합성이 깨지는 이슈를 방지하기 위해 특정 주기(매일, 매주 등)마다 색인 데이터를 전체 재색인하는 동작을 의미한다.정적 색인 시에 검색 성능 영향을 최소화하기 위해 인덱스 교체 전략이 필요해진다. ES에서 데이터를 색인시키는 경우, 검색에 사용 중인 인덱스에 데이터를 대량으로 색인하는 경우 검색 성능이 현저히 떨어진다. e.g. 10ms -> 2000ms 등 이 이슈를 해결..

    [검색엔진] Elasticsearch 랭킹 (2) - 유사도 점수 정규화

    [검색엔진] Elasticsearch 랭킹 (2) - 유사도 점수 정규화

    개요 Elasticsearch에서 질의어를 기준으로 유사도를 매기는 BM25 점수는 0~무한대의 값을 가진다. (물론 현실적으로는 대체로 20, 최대 100 이내의 점수일 것이다) 검색에서 유사도 점수만 사용하는 경우도 있지만, 다른 점수(문서 자체의 품질 점수, 또는 특정 필드의 가중치 점수 등)를 같이 활용하여 랭킹에 사용하기도 한다. 유사도 점수를 다른 점수와 결합하여 사용하기 위해서는 그 자체로 사용할 때 몇 가지 단점이 있다. BM25 점수가 3, 15일 때의 동일한 품질점수 0.5는 영향력 차이가 매우 크다. BM25 점수가 어느 정도의 값을 가질지는 질의어에 따라 상당한 차이가 발생하기 때문에 품질점수의 영향력을 예측하기가 매우 어려워진다. 물론, 검색된 문서들간의 상대적인 비교가 목적이기 ..

    [검색엔진] 검색 엔진 리서치

    [검색엔진] 검색 엔진 리서치

    검색 엔진 검색 엔진이란? 검색 엔진(Search Engine)은 사용자가 웹이나 문서에서 특정 키워드를 검색할 때 관련된 정보를 찾기 위한 소프트웨어 시스템을 의미한다. 대개는 비정형화된 텍스트에 대한 검색을 의미하며, 그림이나 비디오 등의 멀티미디어도 대상이 된다. 여기서의 검색 엔진은 정보 검색(IR, Information Retrieval)의 일종으로 볼 수 있다. IR은 문서나 데이터 소스에서 관련 정보를 검색하고 제공하는 과정을 의미하며, 대개는 텍스트 기반의 정보 검색에 적용되어 사용자의 요구사항과 일치하는 문서를 찾는 것을 목적으로 한다. IR은 사용자의 검색 쿼리를 분석하고 인덱스된 문서를 검색하여 정보를 찾는 등의 문서 검색, 질의 처리, 검색 결과 평가 등의 다양한 기술을 포함하는 개..