본문 바로가기

728x90
728x90

to_tsvector

[PostgreSQL] 텍스트 검색 최적화: phraseto_tsquery - 컴도리돌이 이번에 검색 기능을 최적화해야 하는 쿼리가 있었습니다. 검색 시스템의 성능은 사용자 경험에 크게 영향을 미치기 때문에, 빠르게 정확한 검색 결과를 제공하는 것이 매우 중요하죠. 처음에 유저가 검색한 데이터를 보여주기 위해서, PostgreSQL의 LIKE 연산자를 사용하여 텍스트 검색을 처리하곤 했습니다. 그러나 데이터가 많이 지면서 검색 성능이 눈에 띄게 저하되는 상황이 많이 놓였죠 😓특히, 다중 단어 검색에서는 문제점이 더욱 두드러집니다. 예를 들어, "postgresql performance tuning"과 같은 문구를 검색할 때, LIKE 쿼리는 부분 단어 매칭에만 의존해 결과가 너무 광범위하거나 불안전했습니다. 성능도 상당히 떨어지고요. 🤨  그래서 이번에는 단순한 키워드 검색이 아닌, 문장.. 더보기
[PostgreSQL] NLP 자연어 기반 구문 검색[Full-Text Search] - 컴도리돌이 Elasticsearch에 대해 정리할 때, 우연히 PostgreSQL에 대한 Full Text Search에 대한 포스팅한 글을 보게 되었습니다. 놀랍게도 PostgreSQL에서도 Full Text Search를 지원하고, 놀랍게도 제가 관리하는 페이지에서 데이터를 검색할 때 해당 함수를 이용해서 데이터를 조회를 하였습니다. 저의 무지함에 놀라며, 이번 포스팅에 해당 검색에 대해 조금 알아보려고 합니다. RDBMS에서 특정 단어에 대한 패턴 검색을 할 경우 LIKE와 와일드카드 '%'을 대게 사용합니다. SELECT * FROM products WHERE product_name LIKE '%app%'; LIKE 연산자와 '%' 와일드카드는 부분 문자열 일치를 수행합니다. 예를 들면, 'app'이 포함된.. 더보기