Watson Discovery에서 PowerPoint와 Excel을 크롤링하고 캡처

6812 단어 WatsonDiscovery
Watson Discovery에서 캡처할 수 있는 파일 형식은 Word, PDF, HTML, Json입니다.

Watson Discovery에서 웹 크롤링 (1)
Watson Discovery에서 웹 크롤링 (2)

Nutch에서는 웹 크롤링 대신 파일 시스템을 크롤링하도록 설정할 수 있습니다. 또한 Nutch는 내부적으로 오픈 소스 파서 인 Apache Tika를 사용합니다.이 Apache Tika는 PowerPoint 및 Excel을 포함한 다양한 형식의 파일에서 텍스트 및 메타 데이터를
추출할 수 있습니다. 다음은 Nutch에서 파일 시스템을 크롤링하는 단계를 소개합니다.

설정 절차



소스 코드 얻기 및 빌드



Github 상의 소스 코드를 다음과 같이 취득합니다.
git clone https://github.com/schiyoda/nutch-indexer-discovery.git -b file

여기의 절차 과 같이 buildPlugin 까지 진행합니다.
$ ./gradlew
$ ./gradlew setupHbase
$ ./start-hbase.sh
conf/nutch-discovery/nutch-site.xml の修正
$ ./gradlew setupNutch
$ ./gradlew buildPlugin

조금 해설



취득한 소스 코드는 여기 에 있는 것에 대해, 파일 시스템 크롤링을 위해서 다음과 같은 수정을 하고 있습니다.

nutch-site.xml 수정



파일 시스템 크롤링을 위해 plugin.includes에서 protocol-httpclient 대신 protocol-file을 지정합니다. 또한 파일 메타데이터 검색을 위해 parse-metatags, index-metadata 를 추가합니다.

nutch-site.xml
  <property>
    <name>plugin.includes</name>
    <!-- do **NOT** enable the parse-html plugin, if you want proper HTML parsing. Use something like parse-tika! -->
    <value>protocol-file|urlfilter-regex|parse-(text|tika|js|metatags)|index-(basic|anchor|metadata)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|indexer-discovery</value>
  </property>

또한 다음 설정을 추가합니다. 각각,
file.crawl.parent: 파일 시스템을 지정된 폴더에서 하위 방향으로 크롤링
file.content.limit: 검색할 파일 크기를 무제한으로 설정
index.metadata: 검색할 메타데이터 지정

nutch-site.xml
  <property>
    <name>file.crawl.parent</name>
    <value>false</value>
  </property>
  <property>
    <name>file.content.limit</name>
    <value>-1</value>
  </property>
  <property>
    <name>index.metadata</name>
    <value>Last-Modified</value>
  </property>

hbase-site.xml 수정



크롤링이 중간에 멈추는 오류에 대한 대응

hbase-site.xml
  <property>
    <name>hbase.regionserver.lease.period</name>
    <value>1200000</value>
  </property>

크롤링 설정



seed/url.txt로 크롤링할 파일 시스템의 최상위 폴더를 나열합니다.

url.txt
file://Users/chiyoda/work/docs/

폴더 이름 끝에/(슬래시)를 붙여야합니다.

build/apache-nutch-2.3.1/runtime/local/conf/regex-urlfilter.txt를 수정하고 기본적으로 활성화되지 않은 파일 크롤링을 활성화합니다. 또한 PowerPoint 또는 Excel이 크롤링 대상이 되도록 수정합니다.

regex-urlfilter.txt
# skip file: ftp: and mailto: urls
-^(ftp|mailto):

# skip image and other suffixes we can't yet parse
# for a more extensive coverage use the urlfilter-suffix plugin
-\.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|CSS|sit|SIT|eps|EPS|wmf|WMF|zip|ZIP|ppt|PPT|mpg|MPG|xls|XLS|gz|GZ|rpm|RPM|tgz|TGZ|mov|MOV|exe|EXE|jpeg|JPEG|bmp|BMP|js|JS)$

그럼 크롤링 해 보겠습니다.
$ ./crawl
Injecting urls from ./seed/urls.txt
./build/apache-nutch-2.3.1/runtime/local/bin/nutch inject ./seed/urls.txt
InjectorJob: starting at 2018-06-01 15:06:10
InjectorJob: Injecting urlDir: seed/urls.txt
InjectorJob: Using class org.apache.gora.hbase.store.HBaseStore as the Gora storage class.
InjectorJob: total number of urls rejected by filters: 0
InjectorJob: total number of urls injected after normalization and filtering: 1
Injector: finished at 2018-06-01 15:06:14, elapsed: 00:00:03
Generate urls: 
./build/apache-nutch-2.3.1/runtime/local/bin/nutch generate -topN 5
GeneratorJob: starting at 2018-06-01 15:06:16
GeneratorJob: Selecting best-scoring urls due for fetch.
GeneratorJob: starting
GeneratorJob: filtering: true
GeneratorJob: normalizing: true
GeneratorJob: topN: 5
GeneratorJob: finished at 2018-06-01 15:06:19, time elapsed: 00:00:03
GeneratorJob: generated batch id: 1527833176-1112895280 containing 1 URLs
Fetch urls: 
./build/apache-nutch-2.3.1/runtime/local/bin/nutch fetch -all
FetcherJob: starting at 2018-06-01 15:06:21
FetcherJob: fetching all
FetcherJob: threads: 10
FetcherJob: parsing: false
FetcherJob: resuming: false
FetcherJob : timelimit set for : -1
Using queue mode : byHost
Fetcher: threads: 10
QueueFeeder finished: total 1 records. Hit by time limit :0
fetching file:///Users/chiyoda/work/docs/ (queue crawl delay=5000ms)
-finishing thread FetcherThread1, activeThreads=1
-finishing thread FetcherThread2, activeThreads=1
-finishing thread FetcherThread3, activeThreads=1

크롤링을 여러 번 실행하면 파일이 Discovey에 캡처되었음을 확인할 수 있습니다.



각 폴더의 정보도 일건으로 받아들여 버리는 것 같기 때문에, 검색시에는 이하와 같은 조건 설정을 하는 것이 좋을지도 모릅니다.
title:!"Index of /Users/chiyoda/work/docs"

좋은 웹페이지 즐겨찾기