我从已抓取的内部网站获取结果。问题是由于在代码中使用了位置哈希,我得到了多个结果:
http://site.com/en/personal/refunds.html
http://site.com/en/personal/refunds.html#
http://site.com/en/personal/refunds.html#content
http://site.com/en/personal/refunds.html#section1
虽然它们可能都是相关的,但当它们是我的前四名结果时看起来并不好看! 他们可以被视为一种结果吗?
看起来#和#content在大多数页面上出现,所以我可以应用一些规则来过滤掉这些。它们用于跳过内容,而另一个用于切换辅助功能样式表。
答案 0 :(得分:1)
您可以过滤以#中包含#的模式结尾的网址。 您可以在regex-urlfilter.txt
中指定要包含或排除的模式这样只允许对根页面编制索引,并且排除带#的索引。
答案 1 :(得分:1)
第一个选项和最佳选项是不抓取任何此类页面。使用@Jayendra提到的正则表达式urlfilter
您拥有的另一个选项是使用更新链功能修改索引文档值。 实现接口UpdateRequestProcessor并使用Java代码自行解析,修改URL以删除#anchor元素。
我想到的最后一个选项是在URL字段中使用PatternReplaceCharFilterFactory,如下所示:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(#.*)" replacement=""/>
使用第一个解决方案,您只需为每个“位置”索引一个页面。使用其他页面,您将索引所有页面,但只有最后一页真正被编入索引,因为Solr将删除此文档的任何先前版本。
答案 2 :(得分:0)
好的,我的工作正常,我所做的就是编辑 regex-normalize.xml 文件并告诉它忽略带有#的网址:
<regex>
<pattern>#.*</pattern>
<substitution>$1</substitution>
</regex>
我需要将“urlfilter-regex”添加到 nutch-site.xml 中的plugin.includes属性中,以使其使用此文件。