본문 바로가기
버블 개발/초급

95. 쿼리에 대한 특별사항 (초급): 버블 쿼리 불용어, 형태소 분석, 쿼리의 최적화

by 스타트업 사업가 마르코 2023. 8. 25.
이 섹션에서는 데이터베이스 쿼리 작동 방식과 관련된 특별사항을 설명합니다.
  • 이는 데이터베이스 작동 방식에 대한 기술적 세부 사항을 다루며 쿼리가 예상대로 작동하지 않는 상황을 디버그 하는 데 도움이 될 수 있습니다.

 

(1) Stop words(불용어)

 

1. 불용어 정의

Stop words(불용어)라고 알려진 특정 단어가 있습니다. 이는 문맥적인 의미를 생각할 때를 제외하고 쿼리할 때 데이터베이스가 무시하는 짧고 일반적으로 반복되는 단어들을 말합니다.
  • 예시) "the", "I" 또는 "do"
  • 실제로 이러한 Stop words(불용어) 중 하나에 대한 쿼리 또는 일부 Stop words(불용어)들이 포함된 쿼리가 있는 경우 결과가 기대한 것과 완전히 다를 수 있음을 의미합니다.

 

2. 불용어 목록

다음은 버블 앱 쿼리에 영향을 미치는 Stop wors(불용어) 목록 입니다.

 

i, me, my, myself, we, our, ours, ourselves, you, your, yours, yourself, yourselves, he, him, his

himself, she, her, hers, herself, it, its, itself, they, them, their, theirs, themselves, what, which

who, whom, this, that, these, those, am, is, are, was, were, be, been, being, have, has, had, having, do, does, did, doing, a, an, the, and, but, if, or, because, as, until, while, of, at, by, for, with, about, against, between, into , through, during, before, after, above, below, to, from, up, down, in, out, on, off, over, under, again, further, then, once, here, there, when, where, why, how, all, any, both, each, few, more, most, other, some, such, no, nor, not, only, own, same, so, than, too, very, s, t, can, will, just, don, should, now

 

(2) 형태소 분석

"형태소 분석"은 데이터베이스가 동일한 어간의 다른 단어를 찾기 위해 검색 쿼리를 일반화하는 경우를 의미합니다.
  • 예를 들어, "test"와 "testing"은 어간이 동일하므로 "test"를 검색하면 "testing"이라는 단어가 포함된 결과가 검색됩니다.
  • 형태소 분석은 의미상 유사한 단어를 일치시키므로 "temp"와 "temps"는 일치하지만 "temp"와 "tempo"는 같은 단어의 다른 시제가 아니기 때문에 일치하지 않습니다.
  • 마찬가지로 "test"와 "intestine"은 일치하지 않습니다.
  • Bubble은 Snowball과 함께 PostgreSQL을 사용합니다.

 

(3) 버블 쿼리 최적화

데이터베이스를 쿼리 할 때 매핑 작업에 최적화를 적용하여 속도를 높이려고 합니다.

 

(예시)

  • 다음은 동일한 숫자 목록을 반환하는 다음 두 가지 검색이 있습니다.

1) 검색 A

 MyTypesList의 개수

2) 검색 B

MyTypesList의: 항목 0의 개수, MyTypesList의: 항목 1의 개수, MyTypesList의: 항목 2의 개수, MyTypesList의: 항목 3의 개수, MyTypesList의: 항목 4의 개수, MyTypesList의: 항목 5의 개수, MyTypesList의: 항목 6의 개수

 

  • 내부적으로 검색 A는 매핑된 작업이며 핵심에서 단일 데이터베이스 쿼리로 변환되어 성능이 매우 뛰어납니다.
  • 반면에 검색 B는 차례로 실행되고 사실 이후에 결합되는 7개의 고유한 데이터베이스 쿼리를 생성합니다. 이로 인해 성능이 크게 저하되므로 가능하면 피해야 합니다.