Nutch 0.8 노트 - Google 검색엔진 구현
강남 백의
Nutch 는 Lucene 을 기반 으로 구 글 과 같은 완전한 인터넷 검색엔진 솔 루 션 입 니 다. Hadoop 의 분포 식 처리 모델 을 바탕 으로 시스템 의 성능 을 보장 합 니 다. Eclipse 와 같은 플러그 인 체 제 는 시스템 의 고객 화 를 보장 하고 자신의 응용 프로그램 에 쉽게 통합 할 수 있 습 니 다.
Nutch 0.8 은 Hadoop 을 완전히 사용 해 골간 코드 를 다시 썼 고, 또 많은 부분 을 합 리 적 으로 수정 해 업그레이드 할 가치 가 있다.
1. Nutch 0.8 설치 및 실행
nutch 0.7.2 의 중국어 설치 문 서 는 거리 에 가득 합 니 다. nutch 0.8 의 설치 문 서 는 Tutorial (0.8) 을 참조 하고 두 가 지 를 주의해 야 합 니 다.
첫째, crawl 명령 의 urls 인 자 는 지정 한 파일 에서 지정 한 디 렉 터 리 로 바 뀌 었 습 니 다. 즉, 원래 의 urls 는 urls / foo 에 저장 해 야 합 니 다.
둘째, nutch - default. xml 에서 http. agent. name 속성 은 기본적으로 비어 있 습 니 다. nutch - site. xml 에서 이 속성 에 값 을 설정 해 야 합 니 다. 그렇지 않 으 면 오류 가 발생 할 수 있 습 니 다.
nutch 가 기어 갈 때 정 보 를 log4j 로 / logs 디 렉 터 리 에 출력 합 니 다. 기본 값 은 화면 에 직접 출력 하지 않 습 니 다. 설정 파일 에 fetcher. verbose 를 true 로 설정 하지 않 는 한.
Luke(http://www.getopt.org/luke) 필수 색인 읽 기 도구 입 니 다.
또한, nutch 는 유 닉 스 아래 에서 뛰 어야 합 니 다. windows 에 설치 하려 면 먼저 cygwin 을 설치 할 수 있 습 니 다.(setup. exe 를 다운로드 하여 온라인 설치 가 곧 끝 납 니 다).
마지막 으로 nutch 0.8 의 recawl 스 크 립 트 도 달 라 졌 다.
2.Nutch You should know
2.1 문서 한 부
nutch 의 문서 가 많 지 않 고 설치 문서 가 많 습 니 다. nutch 에 깊이 들 어가 려 면 한 글자 도 빠 뜨리 지 않 고 읽 어야 합 니 다.
Introduction to Nutch, Part 1 Crawling Introduction to Nutch, Part 2 Searching
그 다음 에 소스 코드 를 보 았 습 니 다. 다행히 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 1 Crawling 크롤 류 를 직접 보고 기어 다 니 는 과정 을 이해 할 수 있 을 지도 모른다 는 상세 한 설명 이 담 겨 있다.
여기에 더욱 직관 적 인 그림 이 있다.
Nutch 는 입구 주소, 주소 정규 표현 식, 검색 깊이 세 가지 형식 으로 제한 합 니 다.
Hadoop (다음 편 에서 다시 말 하기) 을 사 용 했 기 때문에 Nutch 의 코드 는 Hadoop 모드 에 따라 작성 되 어 분포 식 능력 을 얻 었 습 니 다. 따라서 Hadoop 에 대해 알 아 보고 Mapper, Rerducer, InputFormat, OutputFormat 류 의 역할 을 알 아야 더 잘 읽 을 수 있 습 니 다.
1. Fetcher 클래스 는 run () 에서 FetcherThread 를 다 중 스 레 드 로 실행 하고, 적절 한 Protocol 플러그 인 (http, ftp 등 프로 토 콜 지원) 을 호출 하여 내용 을 가 져 오고, 적절 한 Parser 를 호출 하여 내용 을 텍스트 로 분석 한 후, 내용 을 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 의 IPC 시스템 을 사용 하여 모든 server 의 nutch Beans 를 호출 하고 마지막 으로 전체적인 결 과 를 규정 합 니 다.
셋째, 모든 사이트 에서 점수 가 가장 높 은 페이지 만 표시 합 니 다. 사용자 가 같은 사이트 의 다른 결 과 를 보고 싶 으 면 MoreHits Exculde [] 를 방문 해 야 합 니 다.
넷 째, Summary 를 만 들 고 segments 디 렉 터 리 를 읽 으 며 segments 와 url 에 따라 content 를 얻 고 일정한 알고리즘 에 따라 키 워드 를 포함 하 는 문서 세 션 을 추출 합 니 다.
3. 원본 코드 수정 또는 플러그 인 작성
Nutch 의 원본 코드 는 쉽게 수정 되 고 재 컴 파일 됩 니 다. 새로 컴 파일 된 class 는 nutch - 0.8. job (실제 jar) 를 눌 러 야 효력 이 발생 합 니 다.
Nutch 의 플러그 인 메커니즘 및 도 는 Eclipse 와 유사 합 니 다. 자세히 보 세 요.http://wiki.apache.org/nutch/WritingPluginExample플러그 인 인 인 터 페 이 스 를 실현 한 다음 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
"
/>
마지막 으로 팔괘, Dedian 동지 가 번역 한 Doug Cutting 인터뷰 록 - 검색엔진 개발 에 관 한 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
elasticsearchnested 삽입 대상 전체 텍스트 검색 및 정렬ES Nested 중첩 유형은 무엇입니까?Elasticsearch에는 다음과 같은 다양한 데이터 유형이 있습니다. 기본 데이터 형식:string 형식.ES 7.x에서string 형식은:text와 키워드로 업그레이드됩...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.