Как я могу исправить ошибку в замене компонента regex flag? - PullRequest
0 голосов
/ 24 января 2019

Я использую Nutch 1.14, так как я использую индексатор GCS.Вот что у меня в nutch-site.xml

<property>  
    <name>index.replace.regexp</name>  
    <value>  
        urlmatch=.*example.com\/[a-zA-Z0-9-]+  
        url:category=/https:\/\/www.example.com\/([a-zA-Z0-9-]+)/$1/  
    </value>  
</property>  

Я получаю сообщение об ошибке:

$ grep 'replace' logs/hadoop.log  
ERROR replace.ReplaceIndexer - Pattern           
url:category=/https:\/\/www.example.com\/([a-zA-Z0-9-]+)/$1/, has invalid flags component  

Я получаю то же самое, когда меняю строку в nutch-site.xmlto:

-url:category=/https:\/\/www.mydomain.com\/([a-zA-Z0-9-]+)/$1/2  

Я хочу получить часть URL в категории.Пример: если url https://www.example.com/testcategory, мне нравится, когда категория будет testcategory

Спасибо.

1 Ответ

0 голосов
/ 24 января 2019

Если я правильно понимаю, вы хотите получить то, что находится после домена (example.com) и поместить его в поле категории, верно?

В этом случае у вас есть ошибка в вашем регулярном выражении. Вы хотите захватить все после example.com/<category>, тогда вам нужно настроить urlmatch как:

urlmatch=.*example\.com\/([a-zA-Z0-9-]+)

В этом случае ([a-zA-Z0-9-]+) создаст группу захвата, доступную через $1. И тогда вы можете установить поле как:

 url:category=$1

Это позволит получить то, что было захвачено группой захвата, и поместить его в поле category.

Вы можете проверить регулярное выражение в: https://regex101.com/r/bMLqOq/1.

...