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

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 가볍게 안봅니다
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
15년 전 조회 1,243
15년 전 조회 793
15년 전 조회 2,018
15년 전 조회 1,407
15년 전 조회 905
15년 전 조회 580
15년 전 조회 695
15년 전 조회 1,111
15년 전 조회 1,187
15년 전 조회 615
15년 전 조회 518
15년 전 조회 771
15년 전 조회 729
15년 전 조회 1,746
15년 전 조회 586
15년 전 조회 653
15년 전 조회 630
15년 전 조회 884
15년 전 조회 1,722
15년 전 조회 1,662
15년 전 조회 1.4만
15년 전 조회 3,198
15년 전 조회 764
15년 전 조회 684
15년 전 조회 820
15년 전 조회 721
15년 전 조회 716
15년 전 조회 1.1만
15년 전 조회 1,208
15년 전 조회 1,077
15년 전 조회 1,409
15년 전 조회 1,345
15년 전 조회 671
15년 전 조회 1,418
15년 전 조회 954
15년 전 조회 710
15년 전 조회 789
15년 전 조회 852
15년 전 조회 1,248
15년 전 조회 749
15년 전 조회 755
15년 전 조회 965
15년 전 조회 711
15년 전 조회 1,447
15년 전 조회 1,075
15년 전 조회 2,897
15년 전 조회 1,382
15년 전 조회 679
15년 전 조회 649
15년 전 조회 793
15년 전 조회 1,286
15년 전 조회 1,216
15년 전 조회 692
15년 전 조회 820
15년 전 조회 1,009
15년 전 조회 1,244
15년 전 조회 1,036
15년 전 조회 1,015
15년 전 조회 1,212
15년 전 조회 684
15년 전 조회 675
15년 전 조회 1,083
15년 전 조회 672
15년 전 조회 1,777
15년 전 조회 2,264
15년 전 조회 841
15년 전 조회 845
15년 전 조회 1,497
15년 전 조회 896
15년 전 조회 1,001
15년 전 조회 1,398
15년 전 조회 1,556
15년 전 조회 1,661
15년 전 조회 1,105
15년 전 조회 1,783
15년 전 조회 1,582
15년 전 조회 818
15년 전 조회 1,793
15년 전 조회 942
15년 전 조회 808
15년 전 조회 846
15년 전 조회 793
15년 전 조회 966
15년 전 조회 980
15년 전 조회 1,188
15년 전 조회 3,206
15년 전 조회 1,776
15년 전 조회 918
15년 전 조회 1,602
15년 전 조회 779
15년 전 조회 910
15년 전 조회 1,875
15년 전 조회 1,831
15년 전 조회 873
15년 전 조회 1,142
15년 전 조회 1,098
15년 전 조회 1,056
15년 전 조회 1,238
15년 전 조회 976
15년 전 조회 996