我找了用Java编写的,如果可能的,或在任何其他语言的Apache Lucene的网络爬虫。 履带必须使用Lucene和创建有效的Lucene索引和文档文件,所以这就是为什么Nutch的消除例如原因...
有谁知道会有这样一个网络爬虫存在,且如果答案是肯定的,我可以找到它。 TNX ...
我找了用Java编写的,如果可能的,或在任何其他语言的Apache Lucene的网络爬虫。 履带必须使用Lucene和创建有效的Lucene索引和文档文件,所以这就是为什么Nutch的消除例如原因...
有谁知道会有这样一个网络爬虫存在,且如果答案是肯定的,我可以找到它。 TNX ...
什么你问的两个组成部分:
couragement首先一句话:在那里,这样做。 我会从使你自己的点分别解决这两个组件,因为我不相信,你可以使用Lucene来你所要求并没有真正理解什么是底下去的东西。
所以,你必须要“爬”,通过收集特定资源网站/目录。 假设它是列出目录的内容,使得网络爬虫任何常见的Web服务器非常简单:只需将其指向的根目录,并定义收集实际的文件,如“以txt结尾”的规则。 很简单的东西,真的。
实际的实现可能是类似这样:使用HttpClient的获得实际的网页/目录列表,分析它们在你的方式找到最有效的,如使用XPath的选择从所获取的文件的所有链接,或只是使用与正则表达式解析它Java的模式和匹配器类一应俱全。 如果你决定去的XPath的路线,可以考虑使用JDOM的DOM处理和Jaxen的用于实际的XPath。
一旦你得到你想要的实际资源,如一堆文本文件,你需要确定数据的类型,以便能够知道什么索引,哪些是你可以放心地忽略。 为了简便起见,我假设这些都是纯文本文件没有字段或任何东西,不会去深入地了解,但如果你有多个字段来存储,我建议你让你的履带式生产的专业化豆1..N与存取和修改器 ( 积分:使豆不变 ,不允许存取变异bean的内部状态,创建一个拷贝构造函数为bean)中的其他组件使用。
在API调用而言,你应该有类似HttpCrawler#getDocuments(String url)
返回一个List<YourBean>
在联合使用以使用与实际索引。
除了显而易见的东西,使用Lucene如建立一个目录,并了解它的线程模型( 只有一个写操作可以在任何时间,多读有可能存在,即使该指数正在更新 ),当然,你要养活你的豆索引。 我已经挂基本上五分钟指南正是这么做的,看看例子addDoc(..)
方法,只是替换字符串YourBean
。
需要注意的是Lucene的IndexWriter类确实有一定的清除方法这是很方便的以可控的方式来执行,例如调用IndexWriter#commit()
后,才一堆文件已经被添加到指数是良好的性能,然后调用IndexWriter#optimize()
以确保指数不会随着时间的推移越来越臃肿巨大的太是个好主意。 一定要记住关闭指数也避免不必要的LockObtainFailedException
s到被抛出,因为所有的IO在Java中这样的操作当然应该在完成finally
块。
[0 to 5]
实际上被转化成+0 +1 +2 +3 +4 +5
这意味着该范围查询死了非常快,因为有查询子部分的最大数量。 有了这个信息,我相信你可以做你自己的特殊的Lucene索引在不到一天的时间,三,如果你想严格测试。
看看Solr的搜索服务器和Nutch的 (履带),两者都涉及到Lucene项目。