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

Fuse.js는 JavaScript 기반의 가볍고 강력한 검색 라이브러리입니다. 이 라이브러리를 이용하면 공공기관 검색 기능을 쉽게 구현할 수 있습니다. 이번 블로그 포스트에서는 Fuse.js를 사용하여 공공기관 검색 기능을 구현하는 방법을 소개하겠습니다.

1. Fuse.js 설치하기

Fuse.js를 사용하기 위해 먼저 해당 라이브러리를 설치해야 합니다. npm을 이용하여 설치할 수 있습니다.

npm install fuse.js

2. 데이터 준비하기

검색할 공공기관 데이터를 미리 준비해야 합니다. 예를 들어, 공공기관의 이름과 주소를 포함하는 JSON 배열 데이터를 사용해보겠습니다.

const publicAgencies = [
  { name: '청와대', address: '서울특별시 종로구 청와대로 1' },
  { name: '국회의사당', address: '서울특별시 영등포구 여의도동 1' },
  { name: '경기도청', address: '경기도 수원시 영통구 청계천로 110' },
  // 기타 공공기관 데이터
];

3. Fuse.js 검색 옵션 설정하기

Fuse.js를 사용하여 공공기관 검색을 구현하기 위해 검색 옵션을 설정해야 합니다. 이 옵션에는 검색 대상과 검색 옵션 등을 포함해야 합니다. 아래는 예시입니다.

const options = {
  keys: ['name', 'address'],
  threshold: 0.3,
};

4. Fuse.js 검색 객체 생성하기

검색 옵션을 기반으로 Fuse.js 검색 객체를 생성합니다.

const fuse = new Fuse(publicAgencies, options);

5. 검색 실행하기

이제 검색 기능을 실행할 수 있습니다. 아래 예제는 사용자가 입력한 검색어를 바탕으로 공공기관 검색을 수행하는 함수입니다.

function searchPublicAgencies(query) {
  return fuse.search(query);
}

위 함수를 호출하면, 입력한 검색어와 가장 유사한 공공기관을 반환합니다.

6. 검색 결과 활용하기

검색 결과를 활용하여 UI에 검색된 공공기관을 표시할 수 있습니다. 아래 예제는 검색 결과를 반복문을 통해 화면에 출력하는 함수입니다.

function displaySearchResults(results) {
  const searchResultsElement = document.getElementById('searchResults');
  
  searchResultsElement.innerHTML = '';
  
  results.forEach((result) => {
    const resultElement = document.createElement('div');
    
    resultElement.innerText = `이름: ${result.item.name}, 주소: ${result.item.address}`;
    
    searchResultsElement.appendChild(resultElement);
  });
}

위 함수를 호출하여 검색 결과를 화면에 표시할 수 있습니다.

마무리

이제 Fuse.js를 이용하여 공공기관 검색 기능을 구현하는 방법을 알아보았습니다. Fuse.js는 다양한 검색 옵션과 유사도 계산 알고리즘을 제공하여 다양한 검색 기능을 구현하는 데에 유용합니다. Fuse.js의 공식 문서를 참고하시면 더 다양한 기능을 활용할 수 있습니다.

참고 자료: