검색 엔진 개발자에게 OS 커널 프로그램 능력이 필요한 이유?

요즘 리눅스 커널 공부에 한창이다. 대학원에서 OS를 작년에 배운지라. OS에 대한 개념을 그때 확실히 세워둬서 아주 보기가 좋다. 오늘 내내 코드 보고 테스트 프로그램 짜보고 하면서 왜 검색엔진 개발자에게 커널에 대한 개념이 필요한지를 어렴풋이 알았다. (솔직히 두근거리기까지 했다. 실험해보고 싶은 욕구까지해서..) 1. 검색엔진에 최적화된 OS를 구비하기 위함2. 색인시 빈번히 일어나는 파일 쓰고 읽기에 대한 접근성 […]

계속 읽기

검색과 클러스터링

클러스터링에 대한 공부는 예전에 k-means 알고리즘을 이용한 음성데이터 클러스터링을 마지막으로 손을 가져가지 않았다가, 이번에 이런저런 책을 보면서 클러스터링에 대한 공부를 해봤다. 검색엔진이 왜 클러스터링과 관련이 있는지 알아보자! 컬렉션이 잘 클러스터링 되어 있다면, 그 해당 클러스터만을 검색해서 문서를 찾아내는것이 더 효과적이다. 이런 효과적인 성능에 비해 크러스터링은 일반적인 검색엔진에 쓰이기 힘든 factor가 있다. 1. 문서 집합에 대해서 […]

계속 읽기

inverted index와 full text scan 사이에 존재하는 signature files

대부분 개발자든  누구든지간에 검색의 시발점이 되는것은 색인이라고 생각을 한다.  색인을 만든다고 하면 대부분 역색인(inverted index)를 생각한다. 여기에 정보검색의 초기시절 빠른 색인 속도와 적은 색인 구조로 제안이 되었던 색인(?)구조를 찾아봤다. 이름하여 “Signature File”구조인데 이 구조는 full text search와 inverted index 구조의 사이에 존재하는 개념이라고 생각하면 전체적인 위치를 보기에 쉬울듯 싶다. 모든 문서들을 실제 문서보다 작은 데이터로 […]

계속 읽기

중복 문서 제거에 대한 : 주로 Shingle 방법

문서의 색인을 만드는데 중복문서 제거는 항상 이슈가 되는 사항이다. 물론 이 부분은 문서를 수집하는 시기부터 웹로봇이 주로 행하는 작업이기도 하고 로봇을 지나 온 문서도 마찬가지로 중복 문서가 존재하고 있는게 사실이다. 중복을 어느정도를 중복으로 봐야 되는지도 상당히 중요한 이슈 사항이여서 exact duplicate 와 유사도를 측정해 중복을 판단하는 방법이 존재하고 있다. exact duplicate는 구현자체는 그리 어렵지 않지만 […]

계속 읽기

인덱싱을 하기전에 어느정도 문서에 대한 ordering을 한다면…

먼저 인덱싱을 하기전에 문서를 reordering을 한다면 문서의 압축 효율이 좋아진다는 논문이 있다.(Blsndford and Blelloch, 2002, Silvestri et al., 2004) reordering이 왜 필요하냐면 문서의 포스팅 파일을 만들기 위해 텀에 대한 문서 번호를 색인에 쓸때 문서의 d-gap을 줄이기 위해서 사용한다. 예를들어 term t가 나오는 문서가 D1, D100, D600 에 해당한다면 이들의 doc no를 색인에 쓸때 1, 99, […]

계속 읽기

[검.개.그 공지] 검색엔진 개발 프로젝트를 진행하려 합니다.

이런 저런 문제 때문에 오픈소스로 개발하고 있던 형태소 분석기의 소스공개도 못하고 개발할 시간이 없어서 망설이고 있는 시점에 지지난주 주말에 한번 모여서 “하얀눈길”님이 추진하고자 하셨던 공개 검색엔진 개발 프로젝트가 가시화 되는거 같다. 몇일전에 공지 문서 하나가 날라왔었는데 카페에 가보니 드디어 공지가 떳다. 안녕하세요. 카페지기 하얀눈길입니다. 카페차원에서 검색엔진 개발을 시작해 보려 합니다. 자세한 사항은 아래 첨부내용 참고하시구요.. […]

계속 읽기

Google PageRank의 Personalization Vector

어제 구글이 개인의 선호도를 어떻게 랭킹에 반영하는지 알아냈다. 이름하여 개인화 검색의 구글버전이라고 해야하나? ㅎㅎ 위의 마지막 식에서 V^T라는 벡터가 개인화 랭킹을 위한 부분인데, Random Surfer가 주소를 직접 넣어서 페이지를 점프할때 적용이 되는 Vector이다. 이 부분을 모든 웹페이지가 동일한 확률로 점프를 한다는게 처음의 개념이다. 하지만 실제로는사람에게는 선호도라는게 있기 때문에 그렇게 하지 않는것이다. 그 벡터 자체가 선호도의 […]

계속 읽기

검색엔진 공부 마인드 맵

예전에 검개그의 하얀눈길님이 검색엔진 공부 모델링을 그려주셨는데 그것을 좀 업그레이드 시켜봤다. 별루 달라진건 없지만 그동안 이 블로그에 올렸던 나의 글들과 개발시 필요한 책들에 대한 언급의 종합판이다. 물론 아래 맵에서 나온 책들이나 소스같은것은 모두 내가 봤고 분석해본 것들이다. ThinkWise 5.0이 새로 나왔다고 해서 그걸로 그려 봤는데 역시나 손에 익은 툴이라서 좋긴하다. 공부해보니 검색엔진은 기초학문에 대한 Base가 […]

계속 읽기

색인문서 파싱에서 정규식 사용할까?

HTML이든 뭐든 원본문서에서 일단 임시 구조화된 문서로 파싱을 한것을 다시 설정에 따라 파싱을 하는 작업을 하고 있다. 인덱싱에서 0.01초의 퍼포먼스 저하도 용납이 안되니 여러가지를 고민하지 않을 수가 없다. 일단 그 임시구조문서 파싱을 하는것인데, 파싱시 정규식을 쓸까 말까 고민을 많이 했다. 이 정규식이라는 놈이 정규식을 어떻게 쓰느냐에 따라 엄청난 퍼포먼스 차이가 나는 놈인지라 쓸데 안쓸데를 가려서 […]

계속 읽기

Lucene KoreanAnalyzer : 사전 인터페이스 및 음절정보테이블 룩업 메서드 제작 완료

오랫동안 끌어왔던 한국어 사전 인터페이스를 완료 했다. 동적으로 커넥션 관리(품사별로 음절 길이에 따른)를 하게끔 제작을 했고 말이 많았던 Hash, Trie모듈을 이용한 메모리 로딩은 잠시 미루기로 했다. Eclipse로 그려본 사전쪽 클래스 구조다. (품사 음절별 사전 객체는 무조건 하나만 생성된다. 그리고 그 사전객체의 커넥션은 접속을 끊기전에는 계속 연결시켜 놓았다.(색인시 종종 쓰기보다는 매우 자주 사용되기 때문이다.)) 그리고 제공 […]

계속 읽기