如何使用 Nutch 解析和检索图像

How to parse and retrieve images with Nutch

在研究了很多关于 Whosebug 的文章和一些问题后,我知道我需要为此目的编写一个自定义的解析器插件,我也知道该怎么做,但我对如何进行感到困惑。

其实我对系统的"flow chart"很迷惑,可能是需要对Nutch的爬取和解析机制进行过多深入的研究。从哪儿开始?自定义HTML解析流程,然后解析相关页面的img标签,最后使用JSoup等工具完成流程

例如,让我必须抓取网络并收集某个特定品牌商品的所有图像。图像搜索将通过文件名和周围的文本进行(这使得也有必要包括文本解析)。

系统流程图应该如何开始编写自定义插件?

我正在使用 Nutch 1.12 和 Solr 6.3 集成...

首先让我说一下,您要尝试做的事情不是一件容易的事,但让我们逐步进行:

  1. 假设在抓取开始之前你没有所有图片的URL,你需要抓取整个网络,但你只需要将图片保留在你的索引中(以及所有关联的元数据)。对于此特定问题,您可以使用 mimetype-plugin 示例配置之一对此进行简化(阻止所有内容并仅显示图像)。

  2. 您需要提取有关图像的元数据(大小、颜色等),好消息是 Tika 已经解析图像并检测到大量元数据。并且您需要编写一个自定义解析过滤器来提取您想要的所有其他数据。

  3. 此外,您还需要提取图像周围的文字,这在 HtmlParseFilter 中并不难,棘手的部分是您如何 关联 此内容包含图像元数据。实现此目的的一种方法是编写自定义 ScoringPlugin 以将数据从原始 HTML 页面(文本所在的位置)共享到图像本身的实际 NutchDocument(请记住这是在不同的 Nutch 步骤中处理的)。另一种机会是将其索引为两个单独的文档(图像元数据 + 从 HTML 中提取的元数据),并在应用程序(例如 Web 应用程序)的查询端执行 group/join。

一些额外的注意事项,这个特定的用例目前并不能直接使用 Nutch 的开箱即用功能来实现,但绝对是可行的。我按照之前的方法搭建了一个基于Nutch和Solr的图片搜索引擎。