짬 나는대로 회원 검색을 위한 모듈을 만들고 있습니다.
이것은 그동안 제 고민의 흔적ㅋ
- 모듈 이름 고민 : https://xetown.com/qna/1031132
- DB 생성 고민 : https://xetown.com/qna/1032338
- 트리거 고민 : https://xetown.com/board/1034216
그렇지만, 아무래도 모듈 개발 습작이 될 듯해요;;;
서버 부하를 최소화한다는 게 어마어마하게 힘든 일이란 걸 실감하고 있습니다.
- 검색창 포커스 -> DB 쿼리 요청 -> 결과값을 로컬저장소에 저장 -> 검색어 입력에 따라 로컬저장소의 결과값을 출력
=> 그렇지만 회원수가 1천명 넘는 규모가 된다든가 하면 클라이언트단에서 로컬저장소의 결과값을 자체 핸들링한다는 게 속도 저하를 가져옵니다ㅠ - 검색어 입력 -> (약간의 시간차를 두고) 실시간 DB 쿼리 요청 -> list_count에 따라 결과값을 출력
=> 이용자들이 회원 검색 서비스를 많이 이용하면 할수록 서버 부하가 발생할 수 있고, 이 경우에도 회원들이 많으면 아무래도;;;
결국, 어떤 식으로든 범용 모듈은 될 수 없겠다는 판단이 듭니다.
(저는 이런 걸 꼭 해봐야 알아요ㅋㅋㅋ큐ㅠㅠㅠ)
그래도 기왕에 만드는 거 쓰레기통에 버리더라도 제대로 만들어봐야겠다는 생각이 듭니다.
일단은 위의 2번 방식으로요. 2018년 8월 18일 12시 18분 현재 https://bit.ly/2nMCn09
앞으로는 검색결과를 유사도 순으로 뿌려주는 걸 해볼까 해요.
구글링해보니 인덱싱 어쩌구 검색엔진 저쩌구 하는데, 엘라스틱이니 그런 거는 제가 감히 넘볼 수 없는 영역 같구요.
그냥 php단에서 해볼 수 없을까 고민 중입니다.ㅎㅎ
php 자체적으로 이런 함수도 있는 것 같구요.
- similar_text : http://php.net/manual/en/function.similar-text.php
- levenshtein : http://php.net/manual/en/function.levenshtein.php
뭐 꼭 그게 아니더라도 알고리즘 비스무리한 것도 있는 것 같습니다.
- StrikeAMatch 알고리즘 : https://code.i-harness.com/ko/q/9f765#answer7
물론 속도가 관건이겠네요 으흐흐흐
https://gist.github.com/TechyTimo/1e888896844adc7c5e1c5af15a98b1a0