[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