blevesearch/bleve
A modern text/numeric/geo-spatial/vector indexing library for go
bleve란 무엇인가요?
bleve는 Go 프로그래밍 언어로 작성된 검색 라이브러리입니다. 개발자는 데이터를 인덱싱(빠른 검색을 위해 정리)하고 해당 인덱스를 쿼리(검색)하여 애플리케이션에 전문 검색 기능을 추가할 수 있습니다.
모든 Go 데이터 구조나 JSON 데이터를 인덱싱할 수 있으며, 필요에 따라 사용자 정의할 수 있는 합리적인 기본 설정이 제공됩니다.
핵심 기능
인덱싱 가능한 필드 유형
bleve는 다양한 데이터 필드를 이해합니다:
- text (단어/문장)
- number (숫자 값)
- datetime (날짜 및 시간)
- boolean (참/거짓)
- geopoint 및 geoshape (지도상의 위치 및 영역)
- IP (인터넷 주소)
- vector (유사도 검색에 사용되는 수학적 표현)
지원되는 쿼리 유형
다음과 같은 방법으로 검색할 수 있습니다:
- 기본 매칭: term, phrase, match, match_phrase, prefix, regexp, wildcard, fuzzy
- 범위 검색: term range, numeric range, date range, boolean field
- 복합 쿼리:
conjuncts(모두 일치),disjuncts(하나라도 일치), 불리언 논리(must/should/must_not)를 사용하여 조건 결합 - 쿼리 문자열 구문: 텍스트 기반의 간단한 쿼리 작성 방식
- 지리 공간 검색: 특정 위치 근처나 영역 내의 항목 찾기
- 벡터 검색: 근사 k-최근접 이웃(벡터를 통한 유사 항목 찾기)
- 동의어 검색: 같은 의미를 가진 단어 매칭
- 계층적 중첩 검색: 구조화된 중첩 데이터 검색
스코어링 및 랭킹
bleve는 tf-idf와 BM25라는 두 가지 잘 알려진 스코어링 모델을 사용하여 결과를 랭킹합니다. 또한 하이브리드 검색을 지원하여 RRF(Reciprocal Rank Fusion)와 RSF(Relative Score Fusion)라는 두 가지 융합 방식을 통해 정확한 키워드 매칭과 의미 기반(semantic) 매칭을 결합할 수 있습니다.
기타 기능
- 결과 페이지네이션: 대규모 결과 집합 페이징
- 쿼리 시간 부스팅: 검색 중 특정 용어나 필드에 가중치 부여
- 매칭 하이라이팅: 문서의 어느 부분이 일치했는지 텍스트 조각과 함께 표시
- 집계/패싯: 용어, 숫자 범위, 날짜 범위별로 결과 그룹화(필터 및 요약에 유용)
작동 방식 (코드 예제)
인덱싱 — 문서 저장:
message := struct {
Id string
From string
Body string
}{
Id: "example",
From: "xyz@couchbase.com",
Body: "bleve indexing is easy",
}
mapping := bleve.NewIndexMapping()
index, err := bleve.New("example.bleve", mapping)
if err != nil {
panic(err)
}
index.Index(message.Id, message)
쿼리 — 인덱스 검색:
index, _ := bleve.Open("example.bleve")
query := bleve.NewQueryStringQuery("bleve")
searchRequest := bleve.NewSearchRequest(query)
searchResult, _ := index.Search(searchRequest)
명령줄 도구
bleve는 go install github.com/blevesearch/bleve/v2/cmd/bleve@latest로 설치할 수 있는 CLI(명령줄 인터페이스)를 제공합니다. 터미널에서 bleve 인덱스와 상호 작용할 수 있습니다. 주요 명령어:
create— 새 인덱스 생성index— 인덱스에 파일 추가query— 인덱스 검색count— 문서 수 계산dump— 인덱스 내용 표시check— 인덱스 무결성 검증fields— 필드 목록 표시mapping— 사용된 매핑 표시dictionary— 필드의 용어 사전 출력bulk— 여러 JSON 문서를 한 번에 로드registry— 컴파일된 구성 요소 목록 표시scorch— scorch 인덱스(기본 스토리지 엔진)와 상호 작용
텍스트 분석
bleve에는 사용자 정의 가능한 범용 분석기와 함께 여러 언어에 대한 사전 구축된 텍스트 분석기가 포함되어 있습니다: 아랍어, 불가리아어, 카탈루냐어, 중일한어, 쿠르드어, 덴마크어, 독일어, 그리스어, 영어, 스페인어(카스티야어 및 갈리시아어), 바스크어, 페르시아어, 핀란드어, 프랑스어, 게일어, 힌디어, 크로아티아어, 헝가리어, 아르메니아어, 인도네시아어, 이탈리아어, 네덜란드어, 노르웨이어, 폴란드어, 포르투갈어, 루마니아어, 러시아어, 스웨덴어, 터키어.
또한 분석기를 실험해 볼 수 있는 텍스트 분석 마법사 bleveanalysis.couchbase.com도 제공됩니다.
도움말 및 라이선스
- 이슈/토론: GitHub issues 및 Google group
- 라이선스: Apache License Version 2.0
요약하자면, bleve는 Go 개발자를 위한 유연하고 기능이 풍부한 검색 라이브러리로, 빠른 작업을 위한 CLI와 텍스트 분석을 위한 광범위한 언어 지원을 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트