由于我使用的是GCS索引器,因此我使用的是1.14。这是我在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.xml中的行更改为:
-url:category=/https:\/\/www.mydomain.com\/([a-zA-Z0-9-]+)/$1/2
我想在类别中获取url的一部分。例如:如果url为https://www.example.com/testcategory,我希望类别为testcategory
谢谢。
答案 0 :(得分:0)
如果我正确理解,您想获取域名(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中测试正则表达式。