결국은 검색엔진까지...

어쩌다 보니 이제는 검색엔진까지 분석하게 되었다. 불과 몇 개월 전까지만해도 Srping, OR Mapping, 개발방법론 등을 보고 있었는데... 역시 사람의 미래는 예측불가...

어쨋든 어제부터 드뎌 lucene에 대한 스터디를 개인적으로 시작하게 되었다. lucene에 대해 얼마 보지 않았지만 너무 매력적인 구성이다. 이거 잘만 활용하면 여러군데에서 사용가능할 것 같은 생각이 든다. 지금 고민하는 분야는 RDBMS를 대체할 만한 데이터관리시스템이다.
다음은 간단하게 lucene로 자바 소스코드를 검색하는 간단한 프로그램을 만든 후 내가 가지고 있는 모든 eclipse 프로젝트의 자바 코드에 대해 index를 만든 후 Luke를 이용해서 검색한 결과이다. Input 으로 시작하는 interface를 implements한 모든 클래스를 조회하는 질의에 대한 결과이다.



언뜻보면 RDBMS의 조회 결과와 비슷하다.
지금 우리가 만드는 많은 애플리케이션은 굳이 RDBMS가 필요 없는 경우도 많다. 자료를 저장한 다음 조회하는 솔루션 중 가장 익숙한 것이 RDBMS이기 때문에 RDBMS를 사용하는 것이다.
lucene를 이용하여 적절한 논리적 데이터모델을 구성하면 RDBMS에서 처리할 수 없는 많은 부분을 처리할 수 있지 않을까 생각해본다. 특히 블로그나, 게시판과 같은 텍스트 위주에 데이터를 주로 사용한 경우에는 잘 사용할 수 있지 않을까 생각한다. 이런 방식으로 Google은 BigTable을 만들지 않았을까 상상해본다.
lucene 분석이 끝나면 한번 도전해볼까... lucene를 이용한 DBMS...

* 자바소스 검색관련 소스는 여기 참고 :
http://www.onjava.com/pub/a/onjava/2006/01/18/using-lucene-to-search-java-source.html?page=1
(lucene 구 버전으로 작성되어 있어 일부 소스 변경 필요, 그리고 내부적으로 자바소스 분석을 위해 eclipse의 Parser를 사용하고 있기 때문에 eclipse의 plugin root에 있는 *.jar 파일을 클래스패스에 등록하여 사용)
* 약 4000개 자바코드 index하는데 소요되는 시간은 4분 정도...
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


Trackback URL : http://www.jaso.co.kr/trackback/117

Comments List

  1. typos 2006/11/07 13:56 # M/D Reply Permalink

    루씬 구조는 웬만한 것들은 다 수용할수 있게끔 되어 있어 아주 매력적이지요..

  2. conv2 2006/11/09 13:35 # M/D Reply Permalink

    제 경우는 이미 게시판 검색에 루씬을 적용하고 있습니다.
    루씬 자체가 코어이기 때문에, 색인하고, 검색하는 과정에 대해선 해답이 없습니다. 그건 얼마나 시행착오를 거치느냐에 따라 루씬을 더 강력하게 만들 수 있을 겁니다. ^^;

    1. 김형준 2006/11/09 14:24 # M/D Permalink

      제 고민을 좀 들어 주셨으면... *^^*

  3. onjo 2006/11/09 20:59 # M/D Reply Permalink

    주인장님의 희열이 전해오는 듯 한 글입니다.. 개발자로써 짜릿하셨을 것 같습니다.. ^^;

  4. udanax 2006/11/10 10:03 # M/D Reply Permalink

    column-oriented dbms로 만든 bigtable은 sparse matrix에 대한 처리같은걸 볼땐 3d 지형 데이터베이스에서나 로그기록에서의 계산량 축소를 위해 사용하는걸로 보이더군요.
    historical query를 위한 time dimension은 url 데이터나 로그분석할때 요소로 사용하려고 추가한걸테고.. 훔

  5. udanax 2006/11/10 10:07 # M/D Reply Permalink

    그리고 lucene만으로는 user by query matrix 같은 거대한 spatial 데이터를 매니지먼트하기란 쉽지가 않지요.

    그런데, 게시판부류에 대해 어떤 데이터모델을 상상하셨는지 저는 이해가 잘 안가네욤. 코멘트 부탁드릴께요.

    1. 김형준 2006/11/10 11:33 # M/D Permalink

      제가 생각하고 있는 부분은 검색에 국한된 것이 아니라 메일, 블로그 등과 같은 read most 업무, 텍스트 기반의 대용량 데이터를 저장하고 이것을 여러대의 데이터 서버에서 서비스 가능한 형태를 생각하고 있습니다. 데이터가 많다는 의미는 그만큼 사용자가 많다는 의미인데 RDBMS를 사용하게 되면 아무래도 확장성에 한계가 있기 때문이죠...

  6. psyOblade 2006/11/11 13:27 # M/D Reply Permalink

    대부분의 국내 서비스 제공업체의 경우 하늘높은 줄 모르고 치솟은 검색엔진 단가를 맞추기란 쉽지않을 것 같습니다.

    그래서 루씬이 어둠속의 빛과 같은(?) 존재일지도요.
    아직은 언어처리와 분산 및 대용량의 숙제가 남아있지만요, 어느정도 플랫폼을 갖추기 위해서는 형준님과 udanax님과 같은 분들의 힘이 절실합니다.

    저 같은 경우도 논문을 쓰기 위한 엔진으로 루씬을 택했습니다. 물론 형태소분석기는 현재 c로 개발중이고요, jni로 붙여서 돌리는 중입니다. 조만간 기본적인 플랫폼만 구축되면 살포시 서버에서 돌려볼까 생각중입니다. 올해안에 끝낼 수 있으려나 ~~ ㅎㅎㅎ

    p.s ) 기억하시나요 ? 전에 typos님 사무실에서 같이 맥주한잔 했었는데 .. 좋은 하루 되십시요.

Leave a comment
« Previous : 1 : ... 299 : 300 : 301 : 302 : 303 : 304 : 305 : 306 : 307 : ... 388 : Next »