Nutch 0.8 Google 검색엔진 구현
Nutch 0.8 은 Hadoop 을 완전히 사용 해 골간 코드 를 다시 썼 고, 따로 Hadoop 업그레이드 할 만 한 가치 가 있다.
1. Nutch 0.8 설치 및 실행
nutch 0.7.2 의 중국어 설치 문 서 는 거리 에 가득 합 니 다. nutch 0.8 의 설치 문 서 는 많은 곳 에서 합리화 수정 을 하 였 다. 참조. 두 가 지 를 주의해 야 합 니 다.
첫째, crawl 명령 의 urls 인 자 는 지정 한 파일 에서 지정 한 디 렉 터 리 로 바 뀌 었 습 니 다. 즉, 원래 의 urls 는 urls / foo 에 저장 해 야 합 니 다.
둘째, nutch - default. xml 에서 http. agent. name 속성 은 기본적으로 비어 있 습 니 다. nutch - site. xml 에서 이 속성 에 값 을 설정 해 야 합 니 다. 그렇지 않 으 면 오류 가 발생 할 수 있 습 니 다.
nutch 가 기어 갈 때 정 보 를 log4j 로 / logs 디 렉 터 리 에 출력 합 니 다. 기본 값 은 화면 에 직접 출력 하지 않 습 니 다. 설정 파일 에 fetcher. verbose 를 true 로 설정 하지 않 는 한.
Luke Tutorial (0.8) 는 필수 색인 읽 기 도구 이다.
또한, nutch 는 유 닉 스 아래 에서 뛰 어야 합 니 다. windows 에 설치 하려 면 먼저 cygwin 을 설치 할 수 있 습 니 다.
마지막 으로 http://www.getopt.org/luke) 도 달 라 졌 다.
2.Nutch You should know
2.1 문서 한 부
nutch 의 문서 가 많 지 않 고 설치 문서 가 많 습 니 다. nutch 에 깊이 들 어가 려 면 한 글자 도 빠 뜨리 지 않 고 읽 어야 합 니 다.
nutch 0.8 recawl 스 크 립 트 와 Introduction to Nutch, Part 1 Crawling
그 다음 에 소스 코드 를 보 았 습 니 다. 다행히 nutch 의 소스 코드 는 매우 고 르 고 짧 으 며 화려 한 기술 이 없어 서 일 을 쉽게 알 아 볼 수 있 습 니 다.
2.2 세 개의 디 렉 터 리
먼저 nutch 의 세 개의 데이터 디 렉 터 리 를 이해 합 니 다.
1. crawdb, linkdb 는 웹 링크 디 렉 터 리 로 url 및 url 의 상호 연결 관 계 를 저장 합 니 다. 파행 과 재 파행 의 근거 로 페이지 는 기본적으로 30 일이 만 료 됩 니 다.
2. segments 는 홈 디 렉 터 리 로 잡 은 웹 페이지 를 저장 합 니 다. 페이지 내용 은 bytes [] 의 raw content 와 parsed text 형식 이 있 습 니 다. nutch 는 넓 은 우선 원칙 으로 기어 다 니 기 때문에 한 바퀴 를 오 를 때마다 segment 디 렉 터 리 를 만 듭 니 다.
3. index 는 lucene 의 색인 디 렉 터 리 입 니 다. index 에 있 는 모든 index 가 합 쳐 진 완전한 색인 입 니 다. 색인 파일 은 페이지 내용 만 색인 하고 저장 되 지 않 았 기 때문에 조회 할 때 segments 디 렉 터 리 에 방문 해 야 페이지 내용 을 얻 을 수 있 습 니 다.
2.3 파행 과정
기어 다 니 는 과정 은 Introduction to Nutch, Part 2 Searching 크롤 류 를 직접 보고 기어 다 니 는 과정 을 이해 할 수 있 을 지도 모른다 는 상세 한 설명 이 담 겨 있다.
여기 에는 Nutch 가 입구 주소, 주소 정규 표현 식, 검색 깊이 세 가지 형식 으로 제한 하 는 보다 직관 적 인 그림 이 있 습 니 다.
Hadoop (다음 편 에서 다시 말 하기) 을 사 용 했 기 때문에 Nutch 의 코드 는 Hadoop 모드 에 따라 작성 되 어 분포 식 능력 을 얻 었 습 니 다. 따라서 Hadoop 에 대해 알 아 보고 Mapper, Reducer, InputFormat, OutputFormat 류 의 역할 을 알 아야 더 잘 읽 을 수 있 습 니 다.
1. Fetcher 클래스 는 run () 에서 FetcherThread 를 다 중 스 레 드 로 실행 하고, 적절 한 Protocol 플러그 인 (http, ftp 등 프로 토 콜 지원) 을 호출 하여 내용 을 가 져 오고, 적절 한 Parser 를 호출 하여 내용 (html, pdf, excel) 을 텍스트 로 분석 한 후, 내용 을 FetcherOutput 클래스 에 넣 고, 마지막 으로 FetcherOutputFormat 클래스 에서 segments 로 쓰기 위 한 과정 을 정의 합 니 다.
2. Indexer 류 는 hadop 을 사용 하여 모든 segments 디 렉 터 리 를 옮 겨 다 니 며 parsedata 파일 을 Parsedata 류 로 정렬 하여 각종 자 료 를 얻 은 다음 플러그 인 을 호출 하여 색인 을 만 듭 니 다. 마지막 으로 oupuutFormat 류 에서 색인 을 기록 하 는 작업 을 수행 합 니 다.
색인 기능 이 아 닌 Nutch 파충류 만 사용 하려 면 Indexer 를 본 떠 서 자신의 실현 을 다시 쓸 수 있 습 니 다. 예 를 들 어 segments 내용 을 데이터베이스 에 직접 옮 길 수 있 습 니 다.
3. Nutch 색인 마다 기 록 된 필드
url: 유일한 표지 값 으로 Basic Indexing Filter 류 에서 생 성 됩 니 다.
segment: Indexer 클래스 에서 생 성 됩 니 다. Nutch 가 가 져 온 페이지 내용 은 segments 디 렉 터 리 에 놓 여 있 습 니 다. lucene 은 색인 만 할 수 있 고 원문 내용 을 저장 하지 않 습 니 다. 따라서 검색 할 때 segment 와 url 을 외부 키 로 하고 Fetched Segments 클래스 는 hits Detail 에 따라 segments 디 렉 터 리 에서 content 를 얻 습 니 다.
boost: 우선 순위, Indexer 클래스 호출 플러그 인 으로 계산 합 니 다.
title: 제목 을 표시 합 니 다. Basic Indexing Filter 플러그 인 에서 색인 되 고 저 장 됩 니 다.
content: 주요 검색 항목 은 Basic Indexing Filter 플러그 인 에서 인 덱 싱 됩 니 다.
2.4 검색 과정
Nutch 는 Fascade 의 NutchBean 클래스 를 제공 합 니 다. 전형 적 인 코드 는 다음 과 같 습 니 다.
NutchBean bean
=
new
NutchBean(); Query query
=
Query.parse(args[
0
]); Hits hits
=
bean.search(query, NUM_HITS,
"
title
"
,
true
);
for
(
int
i
=
0
; i
<
hits.getLength(); i
++
) { Hit hit
=
hits.getHit(i); HitDetails details
=
bean.getDetails(hit); String title
=
details.getValue(
"
title
"
); String url
=
details.getValue(
"
url
"
); String summary
=
bean.getSummary(details, query); }
NutchBean :
하 나 는 Title field 에 따라 정렬 합 니 다.
둘째, 분포 식 조 회 를 지원 합 니 다. server 를 설정 하면 hadop Introduction to Nutch, Part 1 Crawling 시스템 을 사용 하여 모든 server 의 nutch Beans 를 호출 하고 마지막 으로 전체적인 결 과 를 규정 합 니 다.
세 번 째 는 각 사이트 가 Google 처럼 점수 가 가장 높 은 페이지 만 표시 하 는 것 입 니 다. 사용자 가 같은 사이트 의 다른 결 과 를 보고 싶 으 면 API 를 추가 로 호출 해 야 합 니 다.
넷 째, Summary 를 만 들 고 segments 디 렉 터 리 에서 segments 와 url 로 content 를 얻 으 며 일정한 알고리즘 에 따라 Google 과 같은 키 워드 를 포함 하 는 문서 세 션 을 추출 합 니 다.
3. 원본 코드 수정 또는 플러그 인 작성
Nutch 의 원본 코드 는 쉽게 수정 되 고 재 컴 파일 됩 니 다. 새로 컴 파일 된 class 는 nutch - 0.8. job (실제 jar) 를 눌 러 야 효력 이 발생 합 니 다.
Nutch 의 플러그 인 메커니즘 과 도 는 Eclipse 와 유사 합 니 다. 자세히 보기 IPC 는 특정한 플러그 인 인 인 터 페 이 스 를 실현 한 다음 에 plugins. xml 에서 class, 확장 점 과 의존 하 는 jar 를 정의 합 니 다. 예 를 들 어
"
index-basic
"
version
=
"
1.0.0
"
provider-name
=
"
nutch.org
"
>
"
index-basic.jar
"
>
"
*
"
/>
"
nutch-extensionpoints
"
/>
"
org.apache.nutch.indexer.basic
"
name
=
"
Nutch Basic Indexing Filter
"
point
=
"
org.apache.nutch.indexer.IndexingFilter
"
>
"
BasicIndexingFilter
"
class
=
"
org.apache.nutch.indexer.basic.BasicIndexingFilter
"
/>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Azure HDInsight + Microsoft R Server에서 연산 처리 분산Microsoft Azure HDInsight는 Microsoft가 제공하는 Hadoop의 PaaS 서비스로 인프라 주변의 구축 노하우를 몰라도 훌륭한 Hadoop 클러스터를 구축할 수 있는 훌륭한 서비스입니다. 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.