[javascript] Fuse.js를 이용한 음악 검색 기능 구현 방법

Fuse.js는 JavaScript에서 사용할 수 있는 유명한 검색 라이브러리입니다. 이 라이브러리를 활용하여 음악 검색 기능을 구현하는 방법을 알아보겠습니다.

Fuse.js 설치

Fuse.js를 사용하기 위해 먼저 설치해야 합니다. npm을 사용한다면 아래 명령어를 사용하여 설치할 수 있습니다.

npm install fuse.js

이렇게 설치하면 Fuse.js 라이브러리가 프로젝트에 추가되고 사용할 수 있게 됩니다.

음악 데이터 준비

Fuse.js를 사용하여 음악 검색 기능을 구현하기 위해서는 검색할 음악 데이터를 준비해야 합니다. 예를 들어, 아래와 같은 형태의 JSON 데이터를 사용할 수 있습니다.

const musicData = [
  {
    title: "Someone Like You",
    artist: "Adele",
    album: "21"
  },
  {
    title: "Shape of You",
    artist: "Ed Sheeran",
    album: "÷"
  },
  {
    title: "Havana",
    artist: "Camila Cabello",
    album: "Camila"
  },
  // 나머지 음악 데이터...
];

Fuse.js 검색 설정

Fuse.js를 사용하기 위해 검색 설정을 정의해야 합니다. Fuse.js는 일치하는 결과를 찾는데 사용되는 여러 가중치 및 옵션을 제공합니다. 예를 들어, 아래와 같이 검색 옵션과 가중치를 설정할 수 있습니다.

const options = {
  keys: ["title", "artist", "album"], // 검색할 키 목록
  threshold: 0.3 // 일치 율 기준값
};

위의 설정에서 keys는 검색할 키의 목록을 지정하는데, 여기서는 음악의 제목, 아티스트, 앨범 등을 검색할 것입니다. threshold는 일치 율 기준값으로, 이 값보다 낮은 일치율을 가진 결과는 제외됩니다.

Fuse.js 검색 실행

Fuse.js 검색 설정이 준비되었다면, 실제로 검색을 실행할 수 있습니다. 아래 코드는 검색어에 따라 음악 데이터를 검색하는 예시입니다.

const fuse = new Fuse(musicData, options); // 음악 데이터와 검색 설정을 사용하여 Fuse 객체 생성

const searchTerm = "someone"; // 검색어

const searchResults = fuse.search(searchTerm); // 검색 실행

console.log(searchResults);

위의 코드를 실행하면 searchResults에는 검색어와 일치하는 음악 데이터가 담긴 배열이 반환됩니다.

결과 확인

이제 검색 결과를 확인할 수 있습니다. 예를 들어, 아래와 같이 결과를 출력하는 방법이 있습니다.

searchResults.forEach(result => {
  console.log(result.item); // 검색 결과의 음악 데이터
});

위의 코드를 실행하면 검색어와 일치하는 음악 데이터가 출력됩니다.

이렇게 Fuse.js를 활용하여 음악 검색 기능을 구현할 수 있습니다. Fuse.js는 다양한 검색 기능을 제공하므로 필요에 따라 설정을 조정하여 원하는 검색 결과를 얻을 수 있습니다.

더 자세한 내용은 Fuse.js 공식 문서를 참고하시기 바랍니다.