我正在使用nutch抓取我们的大型网站,然后使用solr进行索引,结果非常好。但是,整个站点上有几个菜单结构可以索引和破坏查询结果。
这些菜单中的每一个都在DIV中明确定义,<div id="RHBOX"> ... </div> or <div id="calendar"> ...</div>
和其他几个菜单。
我需要在某些时候删除这些DIVS中的内容。
我猜测正确的地方是在solr索引期间,但无法解决问题。
模式看起来像(<div id="calendar">).*?(<\/div>)
,但我无法在<tokenizer class="solr.PatternTokenizerFactory" pattern="(<div id="calendar">).*?(<\/div>)" />
中使用该模式,我不确定将它放在schema.xml中的哪个位置。
当我在schema.xml中放置该模式时不解析。
答案 0 :(得分:1)
我认为你有几个选择:
我认为最简单的方法是,如果您有一致的绘制标题的方式(即皮肤或常见的包含),则执行#2。那么也许#1和#4。我认为#3会是最难的,但我可能错了。
答案 1 :(得分:1)
Here is a patch,您可以将其放在索引配置中,以忽略您配置的标记的内容。但它只适用于XML,因此,如果您可以整理HTML或者您知道它是XHTML,那么这可以工作,但它不适用于任何随机HTML。
答案 2 :(得分:1)
Nutch 1.12中引入了一项新功能,使用了apache tika解析器,该解析器适用于samppipe算法,用于在解析阶段本身中从html页面中去除页眉和页脚内容。
我们可以在nutch-site.xml中使用以下属性来实现:
<!-- parse-tika plugin properties -->
<property>
<name>tika.extractor</name>
<value>boilerpipe</value>
<description>
Which text extraction algorithm to use. Valid values are: boilerpipe or none.
</description>
</property>
<property>
<name>tika.extractor.boilerpipe.algorithm</name>
<value>DefaultExtractor</value>
<description>
Which Boilerpipe algorithm to use. Valid values are: DefaultExtractor, ArticleExtractor
or CanolaExtractor.
</description>
</property>
它为我工作。希望它也适用于其他人...... :)
有关详细概述,您可以参考此票证: https://issues.apache.org/jira/browse/NUTCH-961
答案 3 :(得分:0)
如果你想这样做,我相信你应该用nutch编写一个自定义解析器,这样要索引的数据就不包含数据了。 基本上解析后,文本数据是原始文本,没有任何结构。