Hadoop 使用solr/lucene为原始HTML内容编制索引

Hadoop 使用solr/lucene为原始HTML内容编制索引,hadoop,solr,lucene,bigdata,Hadoop,Solr,Lucene,Bigdata,我有一些htmls是我在不同时期从同一个网站上刮下来的。原始数据如下所示 timestamp, htmlcontent(500KB) .. 我已经编写了一个解析器来解析HTML中几个有趣的字段,并且我试图基于解析出的字段构建一个搜索引擎。不仅基于HTML的原始文本,还基于原始完整HTML内容> 现在,我的数据如下所示: timestamp, htmlcontent, parsedfield1, parsedfield2 我希望用户搜索时间戳、parsedfield1或parsedfield2

我有一些htmls是我在不同时期从同一个网站上刮下来的。原始数据如下所示

timestamp, htmlcontent(500KB)
..
我已经编写了一个解析器来解析HTML中几个有趣的字段,并且我试图基于解析出的字段构建一个搜索引擎。不仅基于HTML的原始文本,还基于原始完整HTML内容>

现在,我的数据如下所示:

timestamp, htmlcontent, parsedfield1, parsedfield2
我希望用户搜索时间戳、parsedfield1或parsedfield2,我的搜索引擎返回与用户查询匹配的原始HTML并填充浏览器。。。所以它感觉像一台搜索引擎时间机器:)

在这种情况下,我想知道应该如何设计索引?我应该存储哪些字段,哪些不应该。我正在看《Lucene在行动》一书,想知道有谁能帮我解决这个问题

根据我对索引的理解,schema.xml中有几个属性。。。索引与否?是否储存?。。。。我假设,“无论您想在查询结果中包含什么,都应该存储它。”。。在这种情况下,我必须存储包含原始HTML的列

由于该列非常大,一条记录通常大约有数百KB。。。只有几百行。。您可以轻松获得近1GB的数据集。。。这在solr中不起作用,我正在尝试使用Lucene对这些列进行索引,它遇到了heapsize问题

还有一个想法: 也许我应该存储parsedfield1、parsedfield2和指针。。。其中点列是原始HTML文件的绝对路径。当然,在这种情况下,我需要将每个html存储到本地/或HDFS上的单独文件中。。。因此,当用户搜索parsedfield1时,它将返回绝对路径,我将去检索这些文件

我想我正在尽可能清楚地描述这个问题,想知道有没有人能花一分钟给我一些方向性的指导


非常感谢

一些指南 1.您需要XML、CSV或JSON格式的数据,我将为您提供XML示例
例如-->您的xml格式数据

<add>
    <doc>
        <field name="id">01</field>
        <field name="timestamp">somevalue</field>
        <field name="parsedfield1">your data 1</field>
        <field name="parsedfield2">Java data </field>
        <field name="htmlcontent">link to that html file</field>
    </doc>
</add>

01
一些价值
你的数据1
Java数据
链接到该html文件
二,。您需要修改schema.xml

--每个文档都应该有一个唯一的id
——根据您的需要,您只需要存储htmlcontent的路径
--其他字段索引仅用于搜索

 <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
 <field name="timestamp" type="text_general" indexed="true" stored="false" />
 <field name="parsedfield1" type="text_general" indexed="true" stored="false"/>
 <field name="parsedfield2" type="text_general" indexed="true" stored="false" />
 <field name="parsedfield2" type="text_general" indexed="true" stored="false" />
 <field name="htmlcontent" type="text_general" indexed="true"  stored="true" />


3。您可以使用post.jar将所有XML文件发布到solr,或者如果您需要以编程方式使用SOLRJ API


**要存储或不存储的字段**

要对其执行搜索的字段不需要存储,除非您想在结果中显示它们

我想知道指向该html文件的链接,您是在谈论该文件的绝对路径还是在谈论其他内容?@B.Mr.W这取决于您的要求,正如您在问题中提到的,您只想显示这些内容,您可以放置绝对路径,或者您可以使用NOSQL数据库存储html内容,并提供每个html文件的唯一id作为链接(易于管理,NoSQL检索速度更快)。