저는 최근에 Node.js 애플리케이션에서 전체 텍스트 검색(FTS) 사용 를 사용할 수 있습니다. 아시다시피, FTS는 Couchbase Server 4.5부터 개발자 프리뷰로 제공됩니다. 이것은 가능성의 문을 열어준다는 점에서 Couchbase에게 큰 의미가 있습니다. 비효율적인 와일드카드 쿼리를 수행하는 대신 전체 텍스트 인덱스에 대한 검색 쿼리를 사용할 수 있습니다. 물론 비즈니스가 검색을 중심으로 구축되지 않는 한, ElasticSearch나 Solr을 사용할 필요성도 줄어듭니다.

Node.js 문서에 소개된 예제를 Go 프로그래밍 언어를 사용해 실제로 구현해 보겠습니다. Node.js에 관심이 없거나 사용된 예제에 익숙하지 않더라도 걱정하지 마세요. 이전 예제에서는 입사 지원자의 이력서에서 키워드를 스캔하고 점수를 매기는 가상의 이력서 평가 시나리오를 살펴봤습니다. 이 예제는 계속 사용하겠습니다.

종속성이 있는 새 프로젝트 만들기

이 예제를 이해하기 쉽게 하기 위해 처음부터 시작하겠습니다. 즉, 컴퓨터에 이미 GoLang이 설치 및 구성되어 있고 다음과 같은 가정이 전제되어 있습니다. 카우치베이스 서버 4.5가 출시되었습니다.

새 GoLang 프로젝트를 만듭니다. 내 프로젝트는 다음 위치에서 찾을 수 있습니다. $GOPATH/src/github.com/nraboy/cbfts/main.go. 코드를 시작하기 전에 Couchbase Go SDK를 설치해야 합니다. 명령 프롬프트(Windows) 또는 터미널(Mac 및 Linux)에서 다음을 실행합니다:

이 시점에서 개발을 시작할 준비가 되었지만, 개발을 시작하기 전에 Couchbase 버킷에서 필요한 인덱스를 구성해야 합니다.

카우치베이스 서버에서 전체 텍스트 검색 색인 만들기

전체 텍스트 검색을 사용하려면 먼저 특수 색인을 만들어야 합니다. 이 작업은 색인 -> 전체 텍스트 탭을 클릭합니다.

이 섹션에서 다음을 선택할 수 있습니다. 새로운 전체 텍스트 색인 을 클릭하고 적용할 이름과 버킷을 선택합니다. 이 예제에서는 기본값 버킷과 이력서 검색. 인덱스는 매우 기본적이므로 이 인덱스를 통해 문서 필요에 가장 잘 맞출 수 있습니다.

인덱스가 생성된 후 새로 고침 버튼을 클릭합니다. 이 시점에서 대시보드 또는 자체 코드를 통해 테스트해 볼 수 있습니다.

예제 데이터 모델 알아보기

인덱스가 생성되었으므로 데이터 모델을 간단히 살펴보겠습니다. 이력서 같은 문서가 될 것이라는 것을 알고 있으므로 약간의 상상력을 발휘하면 다음과 같은 것을 생각해낼 수 있습니다:

위의 문서에는 기술, 소셜 미디어 정보, 고용 이력 등의 정보가 있습니다. 예, 실제 구직 신청서에는 훨씬 더 자세한 정보가 있을 수 있지만 이는 예시일 뿐입니다.

우리가 주목할 범위는 다음과 같은 텍스트입니다. 개발자 옹호자. 해당 구문을 검색하기 위한 GoLang 코드를 작성하겠습니다.

데이터 검색을 위한 애플리케이션 개발

이 프로젝트는 간단한 예제이기 때문에 작성하는 모든 코드는 하나의 main.go 파일을 열어야 합니다. 애플리케이션 내에서 사용할 모든 종속성을 가져오는 것부터 시작해 보겠습니다:

위에서 볼 수 있듯이, 구조를 JSON으로 마샬링하기 위한 JSON 종속성을 포함하고 있습니다. 또한 Couchbase 및 Couchbase FTS 종속성도 가져오고 있습니다.

수집하려는 데이터는 매우 구체적일 것입니다. 따라서 이를 수용하기 위해 새로운 데이터 구조를 만드는 것이 좋습니다. 이 구조를 다음과 같이 부르겠습니다. FtsHit 를 클릭하고 다음과 같이 표시되도록 합니다:

검색에서 발견된 문서 ID와 검색이 각 히트에 대해 반환하는 점수를 보관합니다. 이러한 각 구조 속성에는 고유한 JSON 태그가 있으며 비어 있으면 무시됩니다.

이를 통해 우리는 우리의 메인 함수입니다.

검색을 시작하기 전에 먼저 Couchbase 클러스터에 연결을 설정하고 버킷을 열어야 합니다. 로컬로 실행 중인 노드에 연결하고 기본값 버킷을 클릭합니다. 연결되면 이전에 생성한 전체 텍스트 검색 쿼리를 사용하여 새 전체 텍스트 검색 쿼리를 만들 수 있습니다. 이력서 검색 index. 이 쿼리는 텍스트를 찾습니다. 개발자 옹호자 모든 문서와 모든 속성에서. 기본적으로 문서의 어느 곳에나 텍스트가 존재하면 해당 문서는 히트로 계산됩니다.

쿼리가 준비되면 쿼리를 실행하고 결과를 반복할 수 있습니다. 각 결과에는 특정 비트와 조각이 우리의 FtsHit 객체를 생성하여 JSON으로 구문 분석하고 인쇄합니다.

지금까지는 괜찮았죠?

좀 더 구체적으로 검색하고 싶을 때는 어떻게 해야 할까요? 전체 문서를 검색할 수 있는 것은 편리하고 멋지지만, 채용 기록 내에서만 검색하고 싶을 수도 있습니다.

실제 검색 쿼리 적은 노력으로:

이 샘플은 단순하게 만들려고 노력했지만, 전체 텍스트 검색으로 할 수 있는 다른 멋진 작업은 무궁무진합니다. 검색 조건을 더 구체적으로 확장하거나 더 구체적인 인덱스를 사용하고 싶을 수도 있습니다. FTS에 대한 자세한 내용은 카우치베이스에서 확인할 수 있습니다. 개발자 문서.

결론

방금 Go 프로그래밍 언어를 사용하여 Couchbase에서 전체 텍스트 검색(FTS)을 사용하는 것이 얼마나 쉬운지 살펴보았습니다. FTS를 사용하면 와일드카드가 많이 포함된 쿼리를 사용하는 것보다 문서 내에서 더 효율적으로 검색할 수 있습니다.

FTS에 대해 자세히 알아보려면 카우치베이스 개발자 포털.

작성자

게시자 Nic Raboy, 개발자 옹호자, Couchbase

닉 라보이는 최신 웹 및 모바일 개발 기술을 옹호하는 사람입니다. 그는 Java, JavaScript, Golang 및 Angular, NativeScript, Apache Cordova와 같은 다양한 프레임워크에 대한 경험이 있습니다. Nic은 웹 및 모바일 개발을 보다 쉽게 이해할 수 있도록 자신의 개발 경험에 대해 글을 쓰고 있습니다.

댓글 남기기