Blog
검색 성능 개선 프로젝트 - nLucene
2010.10.20 18:51
apache+PHP+CUBRID+nLucene+XE가 포함된 인스톨러를 사용하여 신규 웹 서비스를 간편하게 구축할 수 있습니다.
XE nLucene Module을 사용하여 CUBRID +XE 기반의 웹 서비스에서 nLucene을 간편하게 적용할 수 있습니다.
CUBRID Migration Toolkit 을 사용하여 MySQL 기반 데이터를 간편하게 마이그레이션할 수 있습니다.
한달 간 무료로 제공하는 Linux 가상 서버 를 사용하여 충분히 테스트할 수 있습니다.
nLucene은 이런 웹 서비스에 적합합니다.
- Document 데이터가 주로 저장되는 서비스
- 검색 성능 및 검색 결과 품질이 중요한 서비스
- 데이터가 100만건 이하인 소규모 서비스
nLucene은 이런 장점을 제공합니다.
- DB LIKE 검색의 한계를 극복하는 검색 성능 제공
- 한국어 형태소 분석에 따른 유의미한 검색 결과 제공
- 검색어 가중치에 따라 중요 문서가 상위 노출
- 실시간 인덱싱, 실시간 검색 가능
- 비용 추가 없이 검색 엔진 적용 가능
- 다양한 검색어 입력 옵션 가능
검색 응답 시간 비교 그래프
검색 결과 비교 테이블
검색어/항목 | DB 검색 결과 | nLucene 검색 결과 | 비고 |
응답시간 | 4777.00ms | 69.63ms | 68.6배 향상 |
결과건수 | 2건 | 68건 | 대소문자 구분X |
상위 3건 제목 | spamfilter->금지 단어 등록시 hit가 NOT NULL 임에도 값이 입력되지 않아 발생하는 문제 개선. CUBRID -> SELECT 쿼리 생성시 문제 발생 우려 되는 부분. | 윈도우7+iis(7.5)+php5+cubrid에xe 설치 후에 초기하면에 빨간색 글들.. XE 파트너 소개 XE ... Cubrid 에서 update 구문에click counter 적용 | |
응답시간 (검색어2) | 4305.56ms | 79.65ms | 54.0배 향상 |
결과건수 (검색어2) | 95건 | 141610건 | |
상위 3건 제목 (검색어2) | ONEONE 개인서버 홍보 [we-d.net] 무료 웹호스팅 제공 / 1차 입주자 받습니다. Firebug로 debugPrint 로그를 어떻게 보는 건가요? | apache + php + mysql + Zend Optimizer + eAccelerator 1. PHP사용을 위한 윈도우2008 서버 구성 설치시 error 로그좀 봐주세요 | nLucene검색: 검색어 가중치에 따라 노출 순위 결정 |
응답시간 (검색어3) | 3906.33ms | 52.47ms | 74.4배 향상 |
결과건수 (검색어3) | 20 | 18926 | |
상위 3건 제목 (검색어3) | 1.4.0.2 업데이트 후 게시판 검색 스크립트 에러 검색창에 글이 써져있고 누르면사라지게하는법없을까요? 검색통계 위젯을 설치하였는데 | 통합검색에서 검색어 입력 후 엔터를 치면 제목만 검색되는 것을 ... | nLucene검색: 형태소 분석에 의해 ”통합”, “검색”, “통합검색” “통합 검색”이 포함된 문서를 모두 검색 |
이런 이벤트를 진행합니다.
- 이벤트 명: "우리 검색, 빠르게 빠르게"
- 이벤트 소개:
CUBRID+XE+nLucene을 사용하여 신규 서비스 오픈 또는 DB 전환을 고려하시는 분들이 테스트 수행할 수 있도록 Cafe 24의 Linux 가상 서버 호스팅 계정을 한달간 제공해드립니다. - 참가 일정: 10월 25일~11월 30일까지 진행합니다.
- 참가 신청:
cubrid_at_nhn.com으로 이메일 신청(DB 전환/신규 오픈할 서비스 URL 및 간단 소개)
스터디 그룹, 커뮤니티 운영자는 반드시 이메일에 알려 주세요~ - 참가 미션: 테스트/서비스 적용하면서 겪었던 고통, 슬픔, 기쁨, 및 버그, 개선사항 등을 XE 게시판에 올려주세요.
- 참가 혜택:
가상서버 퍼스트클래스 호스팅(http://www.cafe24.com/server/server_vs.php)
참가 미션을 수행하신 분들께는 게시판 포스팅 내용에 따라 상품을 배송해드립니다.
(후보: 고품격 머그컵, 고품격 필기도구 셋트, 수제 피자 기프티콘, 문화 상품권 등)
이런 문서들은 도움이 됩니다.
- CUBRID Lucene Pack with XE 다운로드 및 사용 가이드(PDF): http://cafe.naver.com/studycubrid/742
- CUBRID Migration Toolkit 다운로드 및 사용 가이드(PDF): http://cafe.naver.com/studycubrid/736
- nLucene 소개 및 테스트 결과 문서: http://cafe.naver.com/studycubrid/741
- [2019/03/18] 포럼 XE 레이아웃 제작 일주일 코스
- [2019/01/18] 묻고답하기 모바일에서 서 레이아웃 비정상 문의드려요
- [2018/12/31] 묻고답하기 슬라이드 위젯 삽입 후 메뉴가 안보이네요 고수님들 부탁드립니다 *6
- [2018/11/21] Blog [XE3] XE Store 사업설명회 행사 안내 - 2018년 12월 5일 *2
- [2018/03/28] 묻고답하기 $oMail->setSender Sender 이메일 발신자가 공백으로 나옵니다. *3
댓글 22
-
老姜君
2010.10.20 21:53
-
영구만세
2010.10.20 22:54
db를 바꾸어야 한다는게 좀 그렇군요.
오랫동안 mysql을 써 왔는데.... 음.....
-
Diver
2010.10.21 11:14
phpMyAdmin 형태의 프로그램을 지원해준다면 옴길 의향이 있습니다.
-
XE Developers
2010.10.22 20:12
아직 개선해야 할 것이 있지만
와 같이 제공되고 있습니다.
-
reon
2010.10.21 17:22
큐브리드로 바꾸는것도 부담이지만
웹호스팅 사용자들은 사용못한다던데... -_- 뭐 그림의 떡이군요.
XE 통합검색 보다 좋은거 나온다고 해서 기대를 했는데.. 그림의 떡이라니 ㅠㅠ;;
-
XE Developers
2010.10.22 20:10
웹호스팅 환경에서는 DB Pattern Matching 이상의 검색 기능을 사용하지 못하는 것이 아쉽습니다.
다만 이런 환경에서 syndication 을 활용한 검색 기능 제공도 검토 예정입니다.
-
Xemall
2010.10.22 02:39
쩝....아쉽네요. 이유는 이미 여러분들이 말한것 떄문들에 - -;;
-
^^
2010.10.22 13:52
전략적인 방향이라 아쉽다라고 표현하기에는 좀.. ^^
다만, and 와 or 연산에 대한 검색 지원이 이런 프로젝트에서도 지원되지 않는 것은 답답하네요..
-
XE Developers
2010.10.22 20:10
nLucene의 경우 lucene에서 지원되는 다양한 검색 옵션이 지원이 됩니다.
곧 정리해서 공유드리도록 하겠습니다.
-
디제이쿠
2010.10.24 15:31
-
SMaker
2010.10.24 09:46
-
카르마
2010.10.25 16:44
일단 검색속도는 만족할만합니다.
다만 노출의 순위문제가 있지만 옵션까지 지원이 된다니 다음버전에는 모두다 해결되리라는 믿음에 감사한 마음으로 기다리겠습니다.
노파심에서 드리는 말씀입니다만...
현재는 주기적인 인덱싱을 하다보니 인덱싱하는 동안 큐브리드속도가 현저하게 떨어지는 문제가 있습니다. 인덱싱하는 동안 같은 서버의 다른 홈페이지들도 mysql을 사용하는 것은 문제가 없지만 큐브리드를 사용하는 것들은 동시에 속도가 떨어집니다. 물론 Incremental Indexing이 지원될 예정이라 별 문제는 없을 것으로 생각되지만 캐시화일 재생성처럼 메뉴얼 인덱싱하는 기능도 빼먹지 말고 부탁드립니다.
-
면스판
2010.10.26 11:40
예, 이것은 nLucene 서버가 인덱싱을 수행할 데이터를 DB로부터 스캔하는 작업으로 인해 I/O 가 많이 발생하고 그로 인해 속도가 저하되는 것이 원인입니다. 어느 DB든 nLucene이 DB스캔을 하게 되면 I/O증가로 인해 해당 시간동안 DB 성능이 저하되고 이로 인해 서비스 속도가 저하될 수 밖에 없습니다.
하드웨어 사양이 충분히 받쳐주지 않는 경우, 현재로서 제가 제안드릴 수 있는 방법은 DB에 저장된 데이터 크기 * 서비스 속도를 고려하여 인덱싱 간격을 늘리는 것입니다.첨부 파일에 테스트 결과를 추가하였으니 참고하세요~ http://cafe.naver.com/studycubrid/742
또한, 매뉴얼 인덱싱하는 것은 지금도 가능합니다. 간격을 충분히 늘리시고(24시간?) 색인 설정 탭에서 [등록]버튼 누르시면 누를 때마다 인덱싱합니다.
-
토깽이2
2010.10.26 12:35
기본적으로 깔린 xe에게만 rewrite가 적용되는건가요?
xe를 추가로설치하였는데 작동을 안하는군요.
-
밝은새벽
2010.10.26 18:14
http://cafe.naver.com/studycubrid/749 에 댓글로 답변 드렸습니다.~
-
^^
2010.10.27 11:35
인덱싱으로 인한 성능 저하 문제는 골치가 될 것 같네요.
실시간 검색을 원하는 사이트인 경우에,
인덱싱은 몇시간 간격으로 돌리것도 치명적일 것 같습니다.
그렇다고 용량이 큰 db를 실시간으로 인덱싱할 수도 없으니... ^^..
-
밝은새벽
2010.10.27 14:50
lucene의 인덱스 생성 시간 동안 CPU 리소스를 1개 정도 차지하기는 합니다만, CPU 리소스가 충분하다면(2core 이상?) 성능 저하에 영향을 크게 미치지는 않을 것 같습니다. lucene이 인덱스를 생성하면서 발생하는 쿼리는 rownum 2000개 단위로 xe_documents나 xe_comments를 순차 질의를 하는 것이고, 이 작업 동안에 질의를 날려서 응답시간이 급격히 저하되지는 않았거든요.. 체감속도로는 차이를 못 느끼겠던데요~. (참고로 제가 테스트한 환경은 Intel Xeon 2.33GHz dual core *2 입니다.)
-
카르마
2010.10.27 23:19
실제로 인덱싱동안 서버의 CPU나 메모리등의 리소스에는 거의 영향을 주지 않습니다. 다만 큐브리드의 속도가 떨어지는 점이 문제로 보입니다. 따라서 Mysql 홈페이지들에는 전혀 영향을 미치지 않습니다.
문서 32,000개, 댓글 100,000개에서 테스트했습니다. 아마 문서가 많으면 영향이 더 크지 않을까 싶습니다.
물론 1.1로 업그레이드 되면서 많이 개선된 느낌입니다. 인덱싱하는 동안 쿼리의 우선순위를 낮출수 있는 방법이 있으면 더 좋을 것같습니다.
-
jaehyun
2010.11.06 06:44
DB를 큐브리드로 바꾸고 나서
PHP Warning: Error: CLIENT, -2005, Unknown column type in D:\\01.contents\\xe\\classes\\db\\DBCubrid.class.php on line 176
에러가 발생됩니다. 어떤 조치를 해야 할까요?
-
employee
2010.11.08 11:18
DBMS + Lucene 조합은 DBMS 에서 FTS ( Full-Text Search ) 를 지원하지 않을 때,혹은 user collation 을 지원하지 않을 경우. 언어별 혹은 특수한 Tokenizer 를 지원해야 할 경우...등 사용합니다.
일반적인 DBMS 는 ACID 를 보장하지만 Lucene 자체는 그런 의미가 없기 때문에 고려해봐야 합니다.
큐브리드는 user collation, UNICODE 등을 지원하지 않기 때문에 이런 점도 간과해서는 안됩니다.
-
종달
2010.11.11 19:40
너무 앞서가면 안주하느거만 못한건가요???
좋은 기술이긴 하지만 지금 상황에선 개인 서버에서만 재대로 동작할듯한 조합인거같습니다... 아쉽네요;;;
-
에그당
2010.11.12 12:33
액셀로 설치했는데요~ cubrid 사용자권한으로 cubrid service start 해야 될거 같은 데 cubrid사용자권한 아이디가 무엇입니까?
XE레이아웃에 jQuery를 써서 $를 넣어서? 먹통이 되어버렸는데 재설치 해야합니까?
좋아 보이지만... 큐브리드로 바꿔야 한다는게 부담이로군요.