我有一些htmls是我在不同时期从同一个网站上刮下来的。原始数据是这样的
timestamp, htmlcontent(500KB)
..
我已经编写了一个解析器,从html中解析出一些有趣的字段,并试图基于解析出的字段构建一个搜索引擎。不仅基于html的原始文本,还基于原始完整的html内容>
现在我的数据看起来像:
timestamp, htmlcontent, parsedfield1, parsedfield2
我希望用户搜索timestamp,parsedfield1或parsedfield2,我的搜索引擎返回匹配用户查询并填充浏览器的原始html。。。所以感觉就像一台搜索引擎时间机器:)
在这种情况下,我想知道我应该如何设计索引?我应该存储哪些字段,哪些不应该。我正在看《lucene在行动》一书,想知道有谁能帮我解决这个问题。。
根据我对索引的理解,schema.xml中有几个属性。。。是否索引?是否储存?。。。。我假设,“无论您想在查询结果中包含什么,都应该存储它”。。在这种情况下,我必须存储包含原始html的列。。。
由于该列太大,一条记录通常约为数百kb。。。只有几百行。。你可以很容易地得到一个几乎1gb的数据集。。。这在solr中不起作用,我正在尝试使用lucene索引这些列,它遇到了heapsize问题。。
这里有另一个想法:也许我应该存储parsedfield1、parsedfield2和指针。。。其中point列是原始html文件的绝对路径。当然,在这种情况下,我需要将每个html存储到本地/或hdfs上的单独文件中。。。所以当用户搜索parsedfield1时,它会返回绝对路径,我会去检索那些文件。。。
我想我正在尽可能清楚地描述这个问题,想知道有没有人能花一分钟时间给我一些方向性的指导。。。
非常感谢!
1条答案
按热度按时间zpjtge221#
一些准则1。您需要xml或csv或json格式的数据,我将为您提供xml示例
例如-->xml格式的数据
2您需要修改schema.xml
--每个文档都应该有一个唯一的id
--根据您的需要,您只需要存储htmlcontent的路径
--其他字段索引仅用于搜索
三。您可以使用post.jar将所有xml文件发布到solr,或者如果需要以编程方式使用solrj API
是否存储字段
要对其执行搜索的字段不需要存储,除非要在结果中显示它们