개발 의뢰 관련건 중에서..

http://sir.co.kr/bbs/board.php?bo_table=rq_program&wr_id=34410

검색엔진 관련된 의뢰가 있네요..
어려운건 없어 보이는 의뢰인데, 한가지가...

4번 항목
- 수십 또는 수백만 데이터 검색 지원(검색속도가 느려지면 안됩니다.)

단순히 mysql의 like 검색으로는 해결될수 없는 부분인데, 어떻게 하는건지요?

궁금해서 올려봅니다.


|

댓글 8개

↓ 말러님이 크롤러 강의 들으셨습니다
첫번째 댓글이 아래댓글에 대한 암시인듯 한데, 누구글을 봤다는건지는 모르겠고,

당연히 풀텍스트로 처리해야죠.
풀텍스트로 처리시 천만건 정도는 보통 1/100 ~ 1/10 초 정도로 처리됩니다.(0.01~0.1)
제가 예전에 작업한 자료중에 대략 500만건 정도되는 작업이 있었는데,
국내외 상당히 많은 영화와 음악의 제목과 간략한 내용을 수집해서 검색, 출력했던 사이트 입니다.
기존 사용하던 방식이 5~10초 정도 걸려서(검색어에따라) 1초 이하로 해준다는 조건으로 db 새로 처리하고 풀텍스트로 작업해서 0.5초 이하로 처리해 드렸습니다. 아주 만족해 하시더군요.
흠 fulltext search indexing 이군요.
형태소 분석을 하지 않은 데이타를 가지고 검색하게 되면, 검색 품질 저하가 발생할텐데, 클라이언트가 납득할 수준의 검색이 되는지요..
물론 컨텐츠가 영어라면 문제 없겟지만,,
풀텍스트는 utf-8 이 기본입니다.
utf-8 에 한글/영어가 무슨 상관일지요.
그리고 위에 댓글에 500만건 정도의 자료를 작업했다고 기재했습니다만.
영화와 음악자료니까 당연히 한글/영어/일어/한자 등이 모두 섞여 있습니다.
구글링을 좀해보니..
mysql에서 indexing 텍스트를 추출하는 방식은 스톱워드(공백이나 화이트스페이스) 를 가지고 추출하게 됩니다.
청소년상담원 단어가 포함된 문서가 있을때, "상담원"을 검색하면, 해당 문서가 검색되지 않을것입니다.
한글은 영어에 비해서 복합명사를 많이 사용하기때문에 위의 케이스가 비번히 발생하게 될것입니다.
mysql에서 like %단어% 보다 떨어지는 수준으로 검색되는것이지요.

(의뢰자가 이를 감수한다면 문제가 없겠죠.)
우선 내 개인적인 견해로는,
남들이 쓴글을 갖고 이렇다 저렇다라고 하는것은 개발자에게 심각한 문제라고 생각합니다. 물론 필요에 따라 적절한 참고는 좋겠지요.
내가 직접 해본결과를 체계적으로 정리해두고 자료화해서 작업할때 적용하거나 참고합니다.

댓글내용을 제대로 안보신건지 잘 이해가 안됩니다만..
영화나 음악자료를 검색할때 반드시 시작절을 갖고 검색하지 않습니다.
예를 들어, '해리포터와 마법사' 라면 해리/포터/해리포터/마법사/와 마법사' 등 포함되는 모든 문자들은 검색됩니다.
또한 ful text 에는 여러 사용자 옵션을 지원합니다.
예를 들어,
against ('해리*' IN BOOLEAN MODE)
against ('+해리* +마법사*' IN BOOLEAN MODE)
아주 다양하게 사용이 됩니다.

질문하고 댓글 단 내용을 보니 단순한 질문의 의도가 아니고 본인의 생각을 중심으로 이야기하고자 하는것으로 생각됩니다.
그러면 직접 그런 환경을 꾸며서 여러가지 검색 방식을 만들어서 처리해보고 경험해보는것이 가장 좋을것이라고 권해 드립니다.

저는 제가 경험하고 겪은 기준을 통해 이런이런 방식으로 처리가 가능하다라고 참고글을 적어드린 것이니, 본인이 적절히 참고하여 필요하면 참고하면 되고 아니면 다른걸 찾거나 로직을 구상해서 겪어보면 됩니다.
그냥 생각을 적다보니, 어투가 매끄럽지 않았네요.
너그러이 넘겨주셨으면 합니다.
개발자 게시판에 질문을 하는 이유는 단 하나. 궁금하기 때문입니다.
(내가 알고 있는 방법 이외에, 다른 해결방법은 무엇일까 하는 욕심때문이죠. 공짜를 바라면 안되는거지만, 개발자 게시판이니까^^)

본문으로 돌아와서..
제가 지적한 부분은 위의 글중에서 "포터" 검색어로 검색이 되느냐 하는 것입니다.(제가 알고 있는 바로는 안된다는것입니다.)
SELECT * FROM `noble` where MATCH (body) AGAINST ('*포터*' IN BOOLEAN MODE)
1차로 인덱싱,
mysql 가볍게 안봅니다
댓글을 작성하시려면 로그인이 필요합니다. 로그인

프로그램

+
제목 글쓴이 날짜 조회
15년 전 조회 1,225
15년 전 조회 771
15년 전 조회 1,997
15년 전 조회 1,381
15년 전 조회 880
15년 전 조회 558
15년 전 조회 661
15년 전 조회 1,085
15년 전 조회 1,161
15년 전 조회 588
15년 전 조회 492
15년 전 조회 744
15년 전 조회 701
15년 전 조회 1,719
15년 전 조회 568
15년 전 조회 631
15년 전 조회 606
15년 전 조회 858
15년 전 조회 1,693
15년 전 조회 1,640
15년 전 조회 1.4만
15년 전 조회 3,178
15년 전 조회 734
15년 전 조회 660
15년 전 조회 794
15년 전 조회 689
15년 전 조회 691
15년 전 조회 1.1만
15년 전 조회 1,186
15년 전 조회 1,044
15년 전 조회 1,381
15년 전 조회 1,321
15년 전 조회 650
15년 전 조회 1,399
15년 전 조회 934
15년 전 조회 680
15년 전 조회 763
15년 전 조회 828
15년 전 조회 1,221
15년 전 조회 721
15년 전 조회 733
15년 전 조회 948
15년 전 조회 685
15년 전 조회 1,422
15년 전 조회 1,050
15년 전 조회 2,869
15년 전 조회 1,360
15년 전 조회 651
15년 전 조회 620
15년 전 조회 772
15년 전 조회 1,265
15년 전 조회 1,198
15년 전 조회 674
15년 전 조회 795
15년 전 조회 982
15년 전 조회 1,217
15년 전 조회 1,018
15년 전 조회 995
15년 전 조회 1,185
15년 전 조회 666
15년 전 조회 648
15년 전 조회 1,056
15년 전 조회 649
15년 전 조회 1,752
15년 전 조회 2,243
15년 전 조회 815
15년 전 조회 823
15년 전 조회 1,480
15년 전 조회 878
15년 전 조회 974
15년 전 조회 1,382
15년 전 조회 1,531
15년 전 조회 1,637
15년 전 조회 1,083
15년 전 조회 1,753
15년 전 조회 1,561
15년 전 조회 797
15년 전 조회 1,771
15년 전 조회 925
15년 전 조회 782
15년 전 조회 823
15년 전 조회 773
15년 전 조회 943
15년 전 조회 957
15년 전 조회 1,173
15년 전 조회 3,189
15년 전 조회 1,755
15년 전 조회 897
15년 전 조회 1,582
15년 전 조회 754
15년 전 조회 891
15년 전 조회 1,854
15년 전 조회 1,807
15년 전 조회 856
15년 전 조회 1,119
15년 전 조회 1,075
15년 전 조회 1,033
15년 전 조회 1,221
15년 전 조회 955
15년 전 조회 976
🐛 버그신고