J.Y.S
¿ whats my interest ?
J.Y.S
전체 방문자
오늘
어제
  • 분류 전체보기 (59)
    • 트러블슈팅 기록 (7)
    • Java&Kotlin (5)
    • Server (22)
    • 데이터 엔지니어링 (3)
    • Architecture& Design Patter.. (1)
    • Daily (11)
    • 알고리즘 공부 (9)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
J.Y.S
Server

검색 서비스 구현: SQL 작성 또는 Full-text search(Elastic Search)

검색 서비스 구현: SQL 작성 또는 Full-text search(Elastic Search)
Server

검색 서비스 구현: SQL 작성 또는 Full-text search(Elastic Search)

2022. 3. 21. 14:03

초안 : 22.01.13
2차 수정 : 22.03.21 (Full-text seach 내용 추가)

1. Like 로 찾기

keyword를 바탕으로 콜키지 매장-이름, 주소 중 일치하는 단어가 있는지 확인해서 List로 반환

=> db의 name, addr의 빈칸을 모두 제거한 뒤 "%"+keyword+"%" 와 일치하는 데이터가 있는지 확인(LIKE)

String sql = "SELECT * FROM corkage_store ck" +
                " WHERE replace(ck.addr, ' ', '') LIKE :keyword" +
                " OR replace(ck.name, ' ', '') LIKE :keyword";

List result = em.createNativeQuery(sql, CorkageStore.class)
                .setParameter("keyword", keyword)
                .getResultList();

하지만 몇 만개 이상의 데이터에서 조회하는 경우 성능적인 면에서 좋지 않기 때문에 where~like 쿼리를 사용한다면 데이터베이스의 범위를 나눠서 일부분만 우선 조회하는 것도 방법이다.

2. Full-text search 로 찾기

Full-text search는 키워드가 포함된 결과를 보여주는 기능으로, mySQL에서 full-text search를 지원하고 있다.

MATCH (col1,col2,col3...) AGAINST (expr [search_modifier])

: 키워드 검색을 통해 관련 있는 결과를 보여주는 기능

  • 대표적인 전체 텍스트 검색 플랫폼 : Elasticsearch, solr
  • MySQL은 full-text search를 지원함.

역인덱스(Inverted Index)

stop 단어(with, the, in ..)를 제외한 단어들을 inverted index로 변환하여 전체 텍스트 검색이 가능하도록 할 수 있다.

  • 검색 엔진 개발에서 inverted index는 가장 많이 사용되는 자료구조 중 하나
  • Elasticsearch에서 사용됨.
저작자표시

'Server' 카테고리의 다른 글

Javascript/Typescript 기본 문법 정리  (0) 2022.02.11
[Spring-boot] @RestController 와 @Controller  (0) 2022.02.02
[Flutter] pagination: 스크롤 시 추가 데이터 로딩하기(무한스크롤)  (0) 2022.01.25
[spring-boot] application.properties-dev로 실행하기  (0) 2022.01.19
[Spring-boot] @RequestBody, @ResponseBody : HTTP body에 데이터 송수신하기  (0) 2021.12.28
  • 1. Like 로 찾기
  • 2. Full-text search 로 찾기
'Server' 카테고리의 다른 글
  • Javascript/Typescript 기본 문법 정리
  • [Spring-boot] @RestController 와 @Controller
  • [Flutter] pagination: 스크롤 시 추가 데이터 로딩하기(무한스크롤)
  • [spring-boot] application.properties-dev로 실행하기
J.Y.S
J.Y.S

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.