[javascript] Fuse.js에서 사용되는 검색 범위 설정 방법
Fuse.js는 JavaScript의 텍스트 검색 라이브러리로, 검색 결과를 정확하게 제공할 수 있는 다양한 옵션을 제공합니다. 그 중에서도 검색 범위를 설정하는 방법을 알아보겠습니다.
1. 검색 범위 설정
Fuse.js에서 검색 범위를 설정하기 위해서는 keys 옵션을 사용합니다. keys는 검색 대상이 될 객체의 속성을 설정하는 배열입니다.
예를 들어, 다음과 같은 예제 데이터가 있다고 가정해봅시다.
const books = [
{ title: "JavaScript Cookbook", author: "John Doe" },
{ title: "Eloquent JavaScript", author: "Marijn Haverbeke" },
{ title: "The Pragmatic Programmer", author: "Andrew Hunt" },
]
만약 title 속성만을 검색 대상으로 설정하고 싶다면, keys 옵션을 다음과 같이 설정하면 됩니다.
const options = {
keys: ['title']
}
const fuse = new Fuse(books, options)
이제 fuse.search('JavaScript')와 같이 search 메소드로 검색을 수행하면, title 속성만을 대상으로 검색이 이뤄집니다.
2. 다중 검색 범위 설정
두 개 이상의 속성을 동시에 검색 대상으로 설정하고 싶다면, keys에 여러 속성을 배열로 설정하면 됩니다.
예를 들어, title과 author 두 개의 속성을 동시에 검색하고 싶다면, keys를 다음과 같이 설정합니다.
const options = {
keys: ['title', 'author']
}
const fuse = new Fuse(books, options)
이제 fuse.search('JavaScript')와 같이 검색을 수행하면, title 또는 author 속성에서 'JavaScript'를 찾아 반환합니다.
3. 검색 범위 설정의 유의사항
검색 범위 설정 방법을 사용할 때, 몇 가지 유의사항이 있습니다.
keys에 지정된 속성의 우선순위에 따라 검색 결과가 반환됩니다. 첫 번째로 찾은 속성이 우선순위가 높으며, 두 번째로 찾은 속성은 더 낮은 우선순위를 가집니다.keys에 존재하지 않는 속성은 검색이 이뤄지지 않습니다.- 객체의 속성 이름에 점이 포함된 경우,
keys에 설정하기 전에 속성 이름에 백슬래시를 추가해줘야 합니다.
Fuse.js에서 사용되는 검색 범위 설정 방법에 대해 알아보았습니다. 이를 활용하여 다양한 검색 조건을 설정하여 원하는 검색 결과를 얻을 수 있습니다.
References
- Fuse.js 공식 문서: https://fusejs.io/
- Fuse.js GitHub 레포지토리: https://github.com/krisk/Fuse