[javascript] Fuse.js에서 사용되는 토큰화(tokenization) 방법

Fuse.js는 자바스크립트에서 사용되는 텍스트 검색 라이브러리입니다. 이 라이브러리에서는 검색어와 대상 텍스트를 비교하기 위해 토큰화(tokenization) 기법을 사용합니다. 토큰화란 텍스트를 작은 단위로 나누는 과정을 의미합니다. Fuse.js에서는 검색어와 대상 텍스트를 각각 토큰화하여 검색의 정확도를 높이는데 사용합니다.

Fuse.js에서 사용하는 토큰화 방법은 다음과 같습니다:

1. 평문 토큰화

Fuse.js의 기본 토큰화 방법은 평문 토큰화입니다. 이 방법은 입력된 텍스트를 공백을 기준으로 단어로 나누고, 모든 단어를 소문자로 변환합니다. 예를 들어, “Hello World”는 [“hello”, “world”]로 토큰화됩니다.

const fuse = new Fuse(list, {
  keys: ['name'],
});

const result = fuse.search('hello world');

2. n-gram 토큰화

Fuse.js에서는 평문 토큰화 외에도 n-gram 토큰화 방법도 지원합니다. n-gram 토큰화는 텍스트를 연속된 n개의 문자열로 나누는 방법입니다. 이 방법을 사용하면 단어보다는 문자 단위로 비교를 수행할 수 있습니다. 예를 들어, “Hello World”는 [‘h’, ‘he’, ‘el’, ‘ll’, ‘lo’, ‘o’, ‘w’, ‘wo’, ‘or’, ‘rl’, ‘ld’]로 토큰화됩니다.

const fuse = new Fuse(list, {
  keys: ['name'],
  tokenize: true,
  tokenSeparator: '',
  minMatchCharLength: 2,  // 토큰의 최소 길이
});

const result = fuse.search('hello world');

Fuse.js에서 기본적으로 사용되는 토큰화 방법은 평문 토큰화입니다. 그러나 특정 상황에서 n-gram 토큰화 방법을 사용하면 더 정확한 검색 결과를 얻을 수 있습니다.

더 많은 정보를 원한다면, Fuse.js 공식 문서를 참고하세요. (https://fusejs.io/)