다이퀘스트 검색엔진만의 장점?

안녕하세요. DQ 컨설팅팀에 있는 윤진희입니다.
민경희 대리의 쪼임에 의해 첨으로 글을 올리네요.
어설픈 글이지만 읽는 분께 도움이 됐으면 좋겠습니다.

본론으로 돌아가서 그럼 이제부터 글 쓸께요...^^;;

제가 담당하고 있는 업무가 검색 컨설팅이다 보니 고객사분들께서
"다이퀘스트 엔진만의 장점이 뭐예여? 다른 타사 엔진도 되는 그런 기능 말고 다이퀘스트만 특별히 뛰어난 점이 뭐예여?"라는 질문을 많이 받습니다.

그러면 뭐 저는 여러 장점(?)이 있지만...우선 고객사의 말을 잘 듣는다. 영맨들이 참 사람 좋다. 개발자들이 우직하고 순박하다. 등등 사실에 기반한 DQ의 장점을 얘기하지만 크게 안먹히죠...^^ 그래서 아래의 3가지 기술적인 장점도 가끔 얘기합니다.

그래서 이번 글에서는 DQ엔진만이 가진 기술적인 장점을 잠깐 얘기해볼까 합니다.

Diquest 검색엔진 특징은 크게 

1.       빠른 검색 속도와 높은 검색정확도

2.       자바기반으로 구현되어 문자코드와 운영체제에 독립적이며, 시스템 운영이 편리

3.       현재 정보처리에서 요구되는 clustering, categorization 등이 내장되어 있어 향후 Knowledge Framework으로 서의 확장 용이

라고 말 할 수 있을 것 같습니다. 그럼 이 3가지에 대해 조금 자세히 다시 말씀드리겠습니다.


1.       빠른 검색 속도와 높은 검색 정확도
- 
검색의 기본은 검색 속도와 정확도로 반드시 확인해야 하는 필수적인 요소입니다. 검색엔진이 아무리 높은 정확도를 제시한다고 해도 속도가 뒷받침이 안되어 서비스가 불가능 하다면 소용이 없고 아무리 빠르다고 하더라도 쓸데 없는 결과만 제시한다고 하면 사용자들이 사용하지 않게 됩니다
.
 
-  검색속도는 효율적인 Index 생성, 분산 처리, 시스템의 H/W 사용 효율성, 개발자의 Programming Skill 등 여러 가지 요소가 복합적으로 작용하여 결정됩니다. 모든 검색엔진 업체가 저 마다 자신의 강점을 강조하고 있는데 위에서 살펴 본 것과 같이 다양한 요소가 복합적으로 작용하므로 직접 실측하거나 타 사이트 레퍼런스 BMT의 비교자료를 보시고 판단하는 것이 제일 좋은 방법이며 국내 가장 많은 검색 트래픽을 가지는 사이트 중에 하나인 GMarket 자료는 다이퀘스트 엔진 성능 평가에 좋은 예제가 될 수 있습니다
.

-  검색은 언어분석, Retrieval, Relevance Ranking을 과정을 거치며 검색 정확도는 이 3단계에 의해 좌우 됩니다. 첫째로 다이퀘스트는 자연어언어처리 전문가 집단으로 구성된 회사로 자타가 공인하는 최고성능의 언어 분석기 씁니다. 두번째로 Retrieval 과정은 사용자 검색질의에 대한 관련문서를 모두 추출하는 단계로 언어 분석에 의해 좌우되니 다이퀘스트는 앞서 말씀드린데로 최고의 언어분석기를 사용하므로 더 말씀드리지 않겠습니다. 세번째로 Relevance 랭킹은 Pagerank, 기타 등등의 다양한 통계적 방법이 사용되나 기본적으로는 각 도메인에 특성에 맞는 랭킹이 가장 적합하며 다이퀘스트에서는 기본적으로 사용되는 방법을 제공함과 동시에 각 도메인에 맞는 랭킹을 적용할 수 있는 프레임웤을 제공합니다
.


2.      
시스템 호환성 및 운영
-   
빠른 검색 속도와 높은 검색 정확도를 가지더라도 시스템적으로 이를 지원하지 못하면 머리만 있고 팔다리가 쫒아가지 못하는 형국이 됩니다
.

-  시스템 어플리케이션 개발을 위해서는 크게 JAVA C/C++이 사용됩니다. Java C/C++에 비해 운영체제에 독립적, 메모리 관리, JVM 이용 등으로 시스템 안정성이 좋으며, 시스템 오류 발생시 원인 파악 및 처리 유리 등 시스템 설치와 운용, 유지보수 등에 장점을 가지고 있습니다. C/C++은 시스템을 자원을 직접 컨트롤 할 수 있어 자바에 비해 속도적 측면에 장점이 있고 윈도우에서는 기본적으로 C++ 개발을 지원하여 윈도우 어플리케이션 개발에도 자바보다는 유리합니다만 위에서 말씀드렸듯 자원 컨트롤을 하나하나 해줘야 하는 어려움과 잘못 되었을 시 시스템 자체에 큰 문제를 야기할 수 있다는 단점이 있습니다. 이런 개발사에서 책임져야 하는 개발 편이성을 열외로 하고도 두 언어를 비교하자면 시스템 설치, 운영, 유지보수 등에는 자바가 강점이 있고 윈도우 어플리케이션 개발과 그래픽 처리, 언어처리 등 많은 량의 데이터를 처리하는 어플리케이션에서는 속도 문제 때문에 C/C++을 사용하고 있습니다
.

-  다이퀘스트 엔진은 2년이 넘는 개발기간을 거치며 자바를 이용하여 시스템 설치, 유지보수 편리라는 자바만의 장점을 살리면서도, 대용량을 처리하기 위한 속도 문제를 분산처리와 자원의 효율적 사용, 데이터 압축 기술 등을 이용하여 해결하였습니다
.

- 
자바사용시의 장점 다시 정리

n  
운영체제 독립
   u      
현재 거의 모든 운영체제가 JVM을 지원하고 있으며 Diquest 검색엔진은 JVM이 설치된 모든 운영체제에 적용이 가능하므로 설치가 용이합니다
.
   
u       C/C++을 사용하는 경우에는 각 운영체제에서 지원하는 라이브러리를 이용하여 컴파일 하여야 하므로 각 운영체제 라이브러리 특성에 따른 프로그래밍이 필요하여 문제가 발생할 소지가 있습니다
.
n  
시스템 자원 관리
   u      
자바는 JVM을 이용하여 표준화된 시스템 자원 관리가 되므로 안정적입니다. 메모리 사용을 예로 들면 자바에서는 JVM을 이용해 메모리 사용량을 제한 할 수 있으나 C/C++ 등에서는 각 프로그램에서 이를 컨트롤 할 수 있는 프로그래밍이 필요하며 시스템의 관리 없이 직접 메모리를 컨트롤 할 수 있어 한 프로그래밍의 사소한 오류로 전체 시스템이 영향을 받을 수 있습니다
.
   
u       JVM에서 기본으로 제공하는 표준화되고 안정적인 쓰레드 시스템을 사용하여 각 OS 나 다양한 라이브러리를 통해 쓰레드를 제공하는 C/C++에 비해 안정적인 분산 시스템을 사용할 수 있습니다
.

n  
시스템 운영 및 유지 보수
   u      
JVM은 기본으로 오류 및 이를 추적하기 위한 모듈이 tightly coupled 하게 인테그레이션 되어 있습니다. 따라서 디버깅을 위해 디버그 모드로 컴파일 해서 사용하거나 디버그 툴(GDB, DDD ), 메모리  관리 툴(dmalloc, boundary checker, electricfence), 실제 시스템에서의 오류를 찾아내기 위한 툴(strace, ltrace) 등을 따로 사용하는 C/C++에 비해 실환경에서 발생한 오류의 원인을 찾아 내고 해결 하기 쉽습니다
.
   
u       자바로 된 검색엔진은 JVM 위에서 구동 되므로 검색엔진이 오류가 기존의 다른 어플리케이션에 미치는 영향을 최소화 할 수 있습니다
.


3.      
향후 Knowledge Framework 으로 서의 확장 용이성
-   
현재 정보처리의 트렌드는 검색엔진의 제한성을 극복하기 위해 클러스터링, 카테고라이져, 감성분석, 시멘틱 웹 등 다양한 정보처리 기술을 요구하고 있습니다. 현재 다이퀘스트는 클러스터링과 카테고라이져가 인테그레이션 된 검색엔진으로 향후 쉽게 이 기능을 확장할 수 있으며 금년도 말에 감성 분석, Web 2.0 지원, RIA기반 시각화 지원...차년도에 시멘틱 웹 및 개인화 지원 등이 예정되어 있어 차후 트렌드에 맞는 기술지원이 용이 합니다
.


  • Favicon of http://www.louisvuittonhandbagsllc.com/acetate-frames-sunglasses-c-432.html BlogIcon HEHE 2011.05.06 18:11 ADDR 수정/삭제 답글

    본론으로 돌아가서 그럼 이제부터 글 쓸께요...^^