티스토리 뷰
검색엔진 변경 후기
ZOOM 검색 엔진의 계약이 종료되면서 자체 서버를 통해 검색엔진을 만들어낼 필요성이 생겼다.
목표
- DataBase 프레임워크는 Mysql을 사용하며 서브 엔진으로는 SPINX 를 사용한다.
- 스핑크스 검색엔진에 적합하도록 쿼리를 변경하여 사용한다.
개선점
DB 접근 횟수 최소화
기존 검색 방식에서는 SQL에 접근횟수가 너무 많았다.
회면에는 5개의 테마가 있으며 각 테마별로 20개의 ROW를 가져와야했는데 사용자가 메인화면에 접속하면 6번의 DB접근을 필요로 한다는 것이다.
스핑크스 노이즈 문제 해결
스핑크스 엔진의 문제점은 검색 결과의 노이즈 문제이며 이를 해결하기 위해서는 2가지 방식이 존재했다.
1.N 의 수를 늘리자
2.TOKEN을 많이 가져가자 (검색 단어를 많이 입력하자)
여기서 내가 할 수 있었던 방식은 2번 방식이였다.
검색 LOG DATA
를 통해 UX 를 분석했고 많은 사용자들이 문장보다는 단어 검색을 선호했고
90%가 하나의 단어 10% 이상이 두개의 단어를 검색하여 사용한다는 것을 힌트로
검색 결과를 공백을 기준으로 구분하여 TOKEN
을 늘려 검색 속도와 검색 결과의 정확도가 향상시켜 퍼포먼스를 향상시킬 수 있었다.
앞으로도 개선해 나갈 문제지만 아쉬웠던 점은 Display Load 속도
가 매우 느리다는 점이였다.
- 비동기 방식이 아니었고
- 광고를 위한 데이터 소스 로드 속도 문제
- 각 계열사는 하나의 검색 페이지를
iframe
태그로 사용함
배운 것
다시 초심으로 돌아가 기본부터 다시 시작한 기분이었다.
어려운거라면 스핑크스 쿼리를 사용해야했다는 점과 처음으로 PHP 코드를 사용하여 작성해야 한다는 것이였지만
다행이 쿼리는 Mapper 방식
, Viwq는 템플릿 방식
의 개발이어서 내가 할 일은 Service Layer
의 DB 환경을
스핑크스 엔진에 적합하도록 변경해주기만 하면되었고 추가적으로 기존 ZOOM API에서 PHP 템플릿만 적용하여 View에 적용하면 되었다.
검색엔진 프로젝트 하나로 기업이 사용하는 PHP의 코드 스타일과 나의 기본기를 사용할 수 있었던 좋은 기회였다.
- Total
- Today
- Yesterday
- OOP
- 스프링부트
- 수학
- C언어
- interview
- kakao
- nginx
- security
- 릿코드
- 매트랩
- 그래프
- Matlab
- springboot
- 자바
- spring-cloud
- Spring
- 백준
- 프로그래머스
- ajax
- 알고리즘
- CS
- 스프링
- 디자인패턴
- JPA
- Solid
- java
- 면접
- docker
- 자격증
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |