검색 프로젝트를 나가면 Group By에 대한 이야기를 많이 듣는다.
예전에는 검색엔진들이 이런 기능을 제공하지 않다가,
외산 검색엔진에서 이런 기능을 제공하니 따라서 제공을 했습니다.
Autonomy K2 엔진에서는 Parametirc Index를 사용해서 Group By를 구현합니다.
아니 Group By보다 더 큰 개념의 제공합니다.
요새 국산 검색엔진에서도 경쟁을 위해서 Group By 기능을 추가했습니다.
하지만 그 작동 방식이 좀 다르더군요.
외산 검색엔진을 미리 Group By의 대상이 되는 Key값을 별도의 색인을 만들어서 검색결과를 재가공합니다.
그래서 속도가 빠르죠.
국산검색엔진에서는 검색결과를 내부적으로 카운트합니다. 그 후 결과를 보여줍니다.
2개 모두 속도는 빠르게 나타납니다. 하지만 보여주는 카테고리의 갯수가 많아지면, 서로 차이가 납니다.
데이터 건수가 10만건이 안되는 곳은 이런 고민을 접어두세요.
단순하게 카테고리 갯수만큼 검색을 하면 됩니다. 단... 각 검색엔진에 맞도록 설정을 바꿔야 합니다.
예를 들면 K2의 경우에는 maxdoc이라는 수치는 1로 하고 정렬 조건을 score로 맞추면 됩니다.
어차피 검색결과 건수만 필요한 것이라 가져오는 데이터는 1건만 하고 정렬도 가장 빠른 정렬 조건인 score로 하면 됩니다.
java 프로그램안에서 순차적으로 10개 카테고리별 건수를 가져온다면 속도에 문제가 발생할 것입니다.
이 경우 카테고리를 모두 뿌려주고 건수만 ajax로 가져오면 됩니다. 이러면 화면은 한번에 뿌려지고 카테고리 건수가 나중에 나옵니다.
사실 이용자입장에서는 한번에 보이겠죠.
일반적으로 사용하는 웹 브라우저(인터넷 익스플로러)는 Ajax로 동시 요청할 수 있는 쓰레드 수가 2개입니다.
이 부분은 부하테스트할때 참고하시면 됩니다.
'IT-Consultant' 카테고리의 다른 글
홈페이지 검색에 맞게 루씬을 패키징해보자. (0) | 2011.07.05 |
---|---|
What is Apache Mahout? (0) | 2011.07.05 |
트위터의 대용량 서비스 기술을 분석해 본다. (0) | 2011.07.05 |
검색엔진에서 인기검색어의 비밀 (0) | 2011.07.05 |
bulk 파일을 여러 디렉토리에 균등하게 나누고 싶다면! (0) | 2011.07.05 |