Nutch предотвратить индексирование родительского URL - PullRequest
0 голосов
/ 04 ноября 2018

Я использую Nutch-1.15 с эластичным поиском. Я хочу просканировать все ссылки в родительском URL и проиндексировать их. Но я не хочу индексировать родительский URL.

Ex: 
Parent url : http://someLink.com/cgi-bin/parent.cgi
                 http://somelink.com/cgi-bin/link1
                 http://somelink.com/cgi-bin/link2
                 http://somelink.com/cgi-bin/link3

Я хочу индексировать только URL-адреса, такие как link1, link2, link3 ..., но не родительский URL http://someLink.com/cgi-bin/parent.cgi

Как это можно сделать?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Плагин «index-jexl-filter» позволяет исключить документы из индексации, но они все еще сканируются, анализируются и отслеживаются исходящие ссылки.

  1. активировать плагин, добавив его в свойство "plugin.includes"
  2. определяет Jexl выражение в свойстве "index.jexl.filter", которое оценивается как ложное для родительской страницы. Помимо самого URL, в контексте Jexl доступны также статус HTTP, заголовок и многие другие переменные. В случае сомнений взгляните на класс JexlIndexingFilter .

Вы можете легко проверить выражение:

% bin/nutch indexchecker \
  -Dplugin.includes='protocol-okhttp|parse-html|index-(basic|jexl-filter)' \
  -Dindex.jexl.filter=' url != "http://localhost/" ' http://localhost/
fetching: http://localhost/
...
Document discarded by indexing filter

Другие URL индексируются, то есть отображаются индексированные поля:

% bin/nutch indexchecker \
  -Dplugin.includes='protocol-okhttp|parse-html|index-(basic|jexl-filter)' \
  -Dindex.jexl.filter=' url != "http://localhost/" ' http://localhost/index.html
fetching: http://localhost/index.html
...
title : Apache2 Ubuntu Default Page: It works
url :   http://localhost/index.html
...
0 голосов
/ 05 ноября 2018
 +^(?:https?:\/\/)?(?:www\.)?somelink\.[a-zA-Z0-9.\S]+\/cgi-bin\/.*

в conf / regex-urlfilter, предыдущая команда позволяет разрешить следующие ссылки

<http://somelink.com/cgi-bin/link1>
<http://somelink.com/cgi-bin/link2>
<http://somelink.com/cgi-bin/link3> 
<http://somelink.com/cgi-bin/>

Если вы поставите перед ним ограничение, оно должно работать

Into conf / regex-urlfilter

-^http:\/\/somelink.com\/cgi-bin\/parent.cgi
+^(?:https?:\/\/)?(?:www\.)?somelink\.[a-zA-Z0-9.\S]+\/cgi-bin\/.*
-^.`
...