사용자가 간단하게 검색 엔진을 만들 수 있는 오픈소스 도구로 Nutch가 있다.
Nutch는 Apache Lucene 인덱싱 API 위에서 동작하는데, Lucene을 편하게 쓸 수 있도록 여러 가지 도구를 추가해서 사용자가 쉽게 검색엔진을 만들 수 있게 해 준다.
Nutch에 대한 전반적인 내용 여기 에서 볼 수 있다.
글을 쓰는 지금 안정적인 릴리즈는 0.8.x 이므로, 0.8.x를 어떻게 쓰는지 살펴 보자.
간단하게 한글로 설명하지만, 여기에 있는 내용은 Nutch 0.8.x Tutorial 을 기반으로 하고 있다.
Requirements
- Java 1.4.x, either from Sun or IBM on Linux is preferred. Set NUTCH_JAVA_HOME to the root of your JVM installation.
- Apache's Tomcat 4.x.
- On Win32, cygwin, for shell support. (If you plan to use Subversion on Win32, be sure to select the subversion package when you install, in the "Devel" category.)
- Up to a gigabyte of free disk space, a high-speed connection, and an hour or so.
Getting Started
First, you need to get a copy of the Nutch code. You can download a release from http://lucene.apache.org/nutch/release/. Unpack the release and connect to its top-level directory. Or, check out the latest source code from subversion and build it with Ant.
Try the following command:
bin/nutch
This will display the documentation for the Nutch command script.
Now we're ready to crawl. There are two approaches to crawling:
- Intranet crawling, with the crawl command.
- Whole-web crawling, with much greater control, using the lower level inject, generate, fetch and updatedb commands.
쉘에서 bin/nutch를 치면 사용법이 나온다.필자가 사용하는 환경에서는 다음과 같은 화면이 나온다.
Nutch를 이용해서 crawling을할 때는두 가지 접근법이 있는데, 하나는 crawl 명령어를 이용한 인트라넷 crawling이고 (특정 사이트만 crawling함) 하나는 inject, generate, fetch, updatedb 명령어를 이용해 하위 단계에서 전체 웹을 crawling하는 방법이다.
인트라넷 crawling 하기 : 설정 편
crawl 명령어를 이용해 인트라넷 crawling을해 보자.
http://lucene.apache.org/nutch/
nutch 라는 파일은 http://lucene.apache.org/nutch/ 이라는 URL을 가지고 있는데, 이 주소가 우리가 crawling할 루트 URL이다 crawling할 모든 페이지는 이 페이지로부터 접근 가능해야 한다.
+^http://([a-z0-9]*\.)*apache.org/This will include any url in the domain apache.org.
예시에서는 +^http://([a-z0-9]*\.)*apache.org/ 정규식에 걸리는 URL만 crawling한다.
<property>
<name>http.agent.name</name>
<value></value>
<description>HTTP 'User-Agent' request header. MUST NOT be empty -
please set this to a single word uniquely related to your organization.
NOTE: You should also check other related properties:
http.robots.agents
http.agent.description
http.agent.url
http.agent.email
http.agent.version
and set their values appropriately.
</description>
</property>
<property>
<name>http.agent.description</name>
<value></value>
<description>Further description of our bot- this text is used in
the User-Agent header. It appears in parenthesis after the agent name.
</description>
</property>
<property>
<name>http.agent.url</name>
<value></value>
<description>A URL to advertise in the User-Agent header. This will
appear in parenthesis after the agent name. Custom dictates that this
should be a URL of a page explaining the purpose and behavior of this
crawler.
</description>
</property>
<property>
<name>http.agent.email</name>
<value></value>
<description>An email address to advertise in the HTTP 'From' request
header and User-Agent header. A good practice is to mangle this
address (e.g. 'info at example dot com') to avoid spamming.
</description>
</property>
인트라넷 crawling 하기 : 실행 편
Once things are configured, running the crawl is easy. Just use the crawl command. Its options include:
- -dir dir names the directory to put the crawl in.
- -threads threads determines the number of threads that will fetch in parallel.
- -depth depth indicates the link depth from the root page that should be crawled.
- -topN N determines the maximum number of pages that will be retrieved at each level up to the depth.
For example, a typical call might be:
bin/nutch crawl urls -dir crawl -depth 3 -topN 50Typically one starts testing one's configuration by crawling at shallow depths, sharply limiting the number of pages fetched at each level (-topN), and watching the output to check that desired pages are fetched and undesirable pages are not. Once one is confident of the configuration, then an appropriate depth for a full crawl is around 10. The number of pages per level (-topN) for a full crawl can be from tens of thousands to millions, depending on your resources.
Once crawling has completed, one can skip to the Searching section below.
설정이 끝난 후, 실행 하는 것은 단순히 crawl 명령어를 쓰기만 하면 된다. 예시에서는
bin/nuch crawl urls -dir crawl -depth 3 - topN 50
urls 디렉토리에서 정해놓은 URL에서 (설정 편에서 만든 디렉토리를 넣으면 된다)
-dir crawl 결과를 crawl 디렉토리에 넣고
-depth 3 루트 페이지로부터 들어 갈 링크의 깊이는 3
-topN 50 각각의 레벨에서 가지고 올 페이지의 개수는 50개. (그렇다면, 총 가지고 오는 페이지의 개수는 3*50=150개? -확실하지 않습니다-)
다음은 검색으로 넘어 가 봅시다. 전체 웹에서 crawling하는건 패스 하겠습니다. 그리고 (만들다 귀찮아서) 검색에 대해선 나중에 업데이트 하겠습니다.
Nutch 튜토리얼에 가시면 상세하게 설명 되어 있습니다. 시키는 대로만 잘 하면 됩니다 =)
'IT-Consultant' 카테고리의 다른 글
KMS 활용 동영상 날리지큐브 편... (0) | 2009.04.10 |
---|---|
extjs의 gridpanel에서 오른쪽 스크롤바가 생기도록 하는 방법 (0) | 2009.04.10 |
Nutch 0.9 를 이용하여 한글 검색하기. (0) | 2009.04.10 |
Nutch crawling (0) | 2009.04.10 |
Logback Console Plugin for Eclipse (0) | 2009.04.09 |