Couchbase Server 4.5에서 미리 볼 수 있는 새로운 기능 중 가장 마음에 드는 것은 전체 텍스트 검색 또는 FTS입니다. 작년에 독립 실행형 개발자 프리뷰로 출시되었으며, 이제 Couchbase 4.5와 완전히 통합된 새로운 개발자 프리뷰를 사용해 볼 수 있습니다. Cécile은 이미 블로그 게시물 에서 Couchbase 지원 콘텐츠 관리 애플리케이션에서 FTS를 사용하는 방법에 대해 설명한 적이 있는데, 여기서는 기능 세트를 소개해드리고자 합니다.

전체 텍스트란 무엇이며 내가 왜 관심을 가져야 하나요?

전체 텍스트를 사용하면 정확히 일치하지 않아도 원하는 내용을 검색하고 찾을 수 있습니다. 전체 텍스트 검색은 좋아요 키워드를 사용하나요? 아니요. 다른 문제입니다. 좋아요 와 와일드카드를 사용할 수 있도록 허용하는 것과는 상당히 다릅니다. 다음 예시를 살펴보겠습니다:

'카우치베이스는 굉장하다'

쿼리에 "'%is Awesome%' 필드 LIKE"를 포함하면 일치합니다. "'%is awesome%' 좋아요'라는 메시지가 표시되지 않는 이유는 좋아요 는 대소문자를 구분합니다. 일부 SQL 언어는 좋아요 키워드를 대소문자를 구분하지 않습니다. 현재 N1QL에서는 이 기능을 지원하지 않지만 톨러케이스 함수를 사용하여 동일한 효과를 얻을 수 있습니다. " 같은 오타가 있는 경우에도 일치하지 않습니다.'%is awesom%' 좋아요". 그래서 좋아요 를 사용하면 필드의 정확한 부분을 일치시킬 수 있습니다.

전체 텍스트는 훨씬 더 많은 기능을 제공합니다. '카우치베이스 어썸'. 즉, 대소문자를 구분하지 않고 'is'와 같이 중요하지 않은 단어(정지 단어는 전문 용어)를 무시할 수 있으며 오타 같은 실수에 관대합니다.

이게 다인가요? 아니요, 필수 새 릴리스 기능 목록을 소개해드리겠습니다:

  • 사전 구축된 여러 분석기를 사용한 텍스트 분석: 덴마크어, 네덜란드어, 영어, 핀란드어, 프랑스어, 독일어, 헝가리어, 이탈리아어, 노르웨이어, 페르시아어, 포르투갈어, 루마니아어, 러시아어, 소라니아어, 스페인어, 스웨덴어, 태국어, 터키어
  • 다양한 쿼리 유형
    • 용어, 구문, 일치, 일치 구문, 접두사
    • 연결, 연결 해제, 부울
    • 숫자 및 날짜 범위
    • 쿼리 문자열(위에 나열된 대부분의 유형을 호출하기 위한 편리한 쿼리 구문, 예: "ale -hoppy +sweet")
  • 채점(TF-IDF)
  • 저장된 필드, 결과 하이라이트 및 결과 스니펫
  • 패싯: 용어 패싯, 숫자 범위 패싯, 날짜 범위 패싯

이러한 모든 기능은 다음을 통해 지원됩니다. Bleve. Go로 작성된 오픈 소스 전체 텍스트 검색 및 색인 프로젝트로, Couchbase의 엔지니어들이 시작했습니다. Couchbase FTS는 Bleve를 Couchbase 클러스터에 통합한 것입니다.

전체 텍스트 검색으로 무엇을 할 수 있나요?

모든 웹사이트에 있는 돋보기, 그리고 모든 웹사이트 와이어프레임에 두 번 생각하지 않고 올려놓는 그 돋보기 아시죠? 바로 전체 텍스트 검색입니다. Google은 사용자의 기대치를 전체 텍스트 수준으로 설정했습니다. 사용자는 패싯 검색을 실행하거나 문맥에 맞는 검색 결과를 표시하기를 원합니다. 생각해 보면 Spotify, Netflix 또는 기타 디지털 경제 챔피언과 같이 큰 성공을 거둔 모든 웹사이트도 마찬가지라고 할 수 있습니다.

전체 텍스트에 ElasticSearch 또는 SOLR을 사용할 수 있다고 생각했는데...

짧은 답변: 예, 가능합니다. 두 가지 모두에 대한 Couchbase Server 커넥터가 있습니다. 현재 Couchbase FTS는 아직 개발자 프리뷰 단계에 있으며 정식 출시일을 발표하지 않았으므로 아직은 아무것도 교체하지 않으셔도 됩니다. 장기적으로 보면 해당 제품에는 FTS에 없는 기능이 있을 수 있습니다. 전체 텍스트 검색이 비즈니스의 핵심인 경우 Couchbase FTS는 만병통치약이 될 수 없습니다. 하지만 많은 검색 사용 사례에서는 다른 도구를 다른 상자에 배포하고, 동기화 상태를 유지하고, 모니터링하고, 커넥터가 제대로 작동하는지 확인하고, 관리하는 등의 작업을 할 필요가 없기 때문에 Couchbase FTS만으로도 충분할 것입니다.

카우치베이스 통합

Couchbase FTS는 Bleve와 Couchbase Server를 통합한 것입니다. 이를 통해 Couchbase에 저장된 JSON 문서의 내용을 기반으로 전체 텍스트 인덱스를 생성할 수 있습니다. 일반 인덱스는 문서와 그 문서에 포함된 단어의 목록입니다(엄밀히 말하면 단어가 아니라 용어가 저장되지만, 여기서는 친구들끼리만 사용합니다). 전체 텍스트 인덱스는 일종의 역 인덱스로, 특정 단어에 대해 해당 단어가 포함된 모든 문서 목록을 알려줍니다.

FTS를 사용하여 고유한 전체 텍스트 색인을 만드는 방법은 다음과 같습니다.

Couchbase 4.5부터는 모든 인덱스가 인덱스 탭(쿼리 탭 옆에 편리하게 배치되어 멋진 새 쿼리 워크벤치로 이동합니다) 아래에 재그룹화되었습니다. 인덱스 탭에서는 N1QL, 보기 및 전체 텍스트에서 사용하는 전역 인덱스를 찾을 수 있습니다.

화면은 세 부분으로 나뉩니다. 첫 번째 화면에서는 전체 텍스트 쿼리를 실행할 수 있고, 두 번째 화면에서는 전체 텍스트 인덱스를 정의할 수 있으며, 세 번째 화면에서는 전체 텍스트 인덱스(또는 다른 인덱스 별칭)에 대한 별칭을 정의할 수 있습니다. 인덱스에 별칭이 필요한 이유는 무엇인가요? 앱에 유용한 수준의 방향성을 추가하기 위해서입니다. 대부분의 경우 전체 텍스트 인덱스로 작업할 때 원하는 결과만 얻기 위해 인덱스를 조정하는 데 시간을 소비합니다. 인덱스를 만들어서 잠시 사용한 후 성능을 확인하고, 약간 다른 설정으로 다른 인덱스를 시도하거나, 일부 정크 문서를 제거하는 등의 작업을 할 수도 있습니다. 별칭을 사용하면 앱에서 매번 인덱스의 이름을 변경할 필요가 없습니다. 대신 별칭이 가리키는 인덱스만 변경하면 됩니다. 두 인덱스가 계속 작동하므로 한 인덱스에서 다른 인덱스로 전환하기만 하면 됩니다.

시작하려면 인덱스를 만들어야 합니다. "beer-ft"라는 간단한 인덱스를 만들겠습니다.

인덱스가 생성되면 전체 텍스트 탭으로 돌아갑니다. 이제 색인을 선택하고 전체 텍스트 쿼리를 실행할 수 있습니다. 그러면 필드에 'ale'이라는 단어가 포함된 모든 문서가 표시됩니다. 특정 필드로 검색을 제한할 수도 있습니다. 예를 들어 이름 필드에 'ale'이 있는 문서를 알고 싶으면 'name:ale'이라고 입력하면 됩니다.

어떤 에일이 더 가벼운지 알고 싶다면 '라이트 에일'을 쿼리 문자열로 사용하고 싶을 수 있습니다. 그러면 실제로 에일과 라이트가 포함된 문서 목록이 표시됩니다. 따옴표 안에 '"light ale"'을 사용하면 "light ale"이 포함된 문서 목록이 표시됩니다.

쿼리를 조정하는 다른 방법도 있습니다. Bleve의 문서는 여기. 인덱스에는 유형 필터링, 사용자 정의 필드 매핑, 임베디드/중첩 구조에 대한 하위 매핑, 사용자 정의 분석기 등과 같은 고급 기능도 있습니다.

자주 묻는 질문

카우치베이스 서버 4.5에서 FTS가 정식 버전으로 출시되나요?

아니요. FTS는 Couchbase Server 4.5 GA와 통합되어 제공되지만 프로덕션 사용에는 FTS가 지원되지 않습니다.

개발자 프리뷰와 4.5 GA 간에 차이점이 있나요?

두 릴리스 간에는 약간의 차이가 있을 것입니다. 성능과 원활한 멀티 노드 지원을 위해 열심히 노력하고 있습니다. 현재로서는 클러스터의 한 노드에서만 Couchbase FTS를 실행할 수 있습니다. 물론 FTS가 복원력이 있고 토폴로지 변경, 장애 조치, 리밸런싱 이벤트를 처리할 수 있어야 한다는 것은 중요합니다. 또한 API는 거의 확실하게 몇 가지 작은 방식으로 변경될 것입니다.

Couchbase FTS를 사용해 보는 가장 좋은 방법은 무엇인가요?

Couchbase Server와 함께 제공되는 맥주 샘플 데이터 세트는 잘 작동합니다. 여기에는 기능과 API를 시험해 볼 수 있는 기회이지만, 대량의 데이터에서 실행하면 문제가 발생할 수 있다는 일반적인 규칙이 적용됩니다. 자체 데이터 집합을 사용하기로 결정했다면 10,000개 이하의 문서로 크기를 적당히 유지하는 것이 좋습니다.

Elasticsearch 및 SOLR 커넥터를 계속 지원하시나요?

네, 물론입니다. Elasticsearch 또는 SOLR이 제공할 수 있는 모든 것을 다루지는 않습니다. 이러한 커넥터는 계속 유지될 것입니다.

N1QL 통합 계획이 있나요?

예, 하지만 먼저 GA 품질을 확보해야 합니다.

Kibana 통합은 어떨까요?

요즘 사람들은 Fulltext에 대해 들으면 Elastic, 특히 강력한 대시보드인 Kibana를 떠올립니다. 그렇긴 하지만 통합을 구축할 계획은 아직 없습니다. 하지만 오픈 소스 소프트웨어이기 때문에 누군가 우리를 놀라게 할 수도 있겠죠...

OK, Go!

로 이동하여 카우치베이스 다운로드 페이지 를 다운로드하고 Couchbase Server 4.5 DP의 다른 모든 새로운 기능과 함께 FTS를 사용해 보세요. 여러분의 의견을 듣고 싶습니다.

작성자

게시자 로랑 도귄

Laurent는 파리에 사는 괴짜 금속공학도입니다. 주로 Java로 코드를 작성하고 AsciiDoc으로 구조화된 텍스트를 작성하며 데이터, 리액티브 프로그래밍 및 기타 유행어에 대해 자주 이야기합니다. 또한 Clever Cloud와 Nuxeo의 개발자 옹호자로 활동하며 해당 커뮤니티가 더 크고 강력하게 성장할 수 있도록 자신의 시간과 전문성을 바쳤습니다. 현재 Couchbase에서 개발자 관계를 운영하고 있습니다.

댓글 하나

  1. [...] 온라인. Couchbase 전체 텍스트 검색 서비스에 대한 일반적인 아이디어는 다음 블로그 게시물에서 유용한 [...]을 참조하세요.

  2. 전체 텍스트 검색을 위해 생성된 인덱스가 Couchbase에서 성능 문제를 일으킬 수 있나요? 성능이란 모든 애플리케이션에 의한 문서 추출을 의미하나요?

댓글 남기기