jsp基于产品的搜索引擎内容摘要:
构来实现 Spider 程序。 基于的搜索引擎 第 11 页 共 34 页 递归结构 递归是在一个方法中调用自己本身的程序设计技术。 虽然比较容易实现但耗费内存且不能使用多线程技术,故不适合大型项目。 非递归结构 这种方法使用队列的数据结构,当 Spider 程序 发现超连接后并不调用自己本身而是把超连接加入到等待队列中。 当 Spider 程序扫描完当前页面后会根据制定的策略访问队列中的下一个超连接地址。 虽然这里只描述了一个队列,但在实际编程中用到了四个队列,他们每个队列都保存着同一处理状态的 URL。 等待队列 在这个队列中, URL 等待被 Spider 程序处理。 新发现的 URL 也被加入到这个队列中 处理队列 当 Spider 程序开始处理时,他们被送到这个队列中 错误队列 如果在解析网页时出错, URL 将被送到这里。 该队列中的 URL 不能被移入其他队列中 完成队列 如果解析网页没 有出错, URL 将被送到这里。 该队列中的 URL 不能被移入其它队列中 在同一时间 URL 只能在一个队列中,我们把它称为 URL 的状态。 以上的图表示了队列的变化过程,在这个过程中,当一个 URL 被加入到等待队列中时 Spider 程序就会开始运行。 只要等待队列中有一个网页或 Spider 程序正在处理一个网页,程序就会继续他的工作。 当等待队列为空并且当前没有任何网页时, Spider 程序就会停止它的工作。 如何构造 Spider 程序 在构造 Spider 程序之 前我们先了解下程序的各个部分是如何共同工作的。 以及如何对这个程序进行扩展。 流程图如下所示: 发现 URL 等待队列 运行队列 完成队列 错误队列 完成 URL 基于的搜索引擎 第 12 页 共 34 页 把 URL 加入等待队列 Spider 程序工作完成 等待队列中是否有 URL。 否 下载从等待队列中得到的网页,并将他送入运行队列中。 是 这个网页包含其他超级连接吗。 将这一网页送入完成队列并继续 查看网页上的下一个超连接 是否为指向Web 的连接。 报告其他类型连接 连接是否与网页所在主机不同且只处理本地连接。 报告外部连接 报告网页连接 将连接加入等候队列 否 是 否 是 否 是 基于的搜索引擎 第 13 页 共 34 页 IspiderReportable 接口 这是一个必须实现的接口,可以通过回调函数接受 Spider 所遇到的页面。 接口定义了 Spider 向他的控制者发送的几个事件。 通过提供对每个事件的处理程序,可以创建各种 Spider 程序。 下面是他的接口声明: public interface IspiderReportable{ public boolean foundInternalLink(String url)。 public boolean foundExternalLink(String url)。 public boolean foundOtherLink(String url)。 public void processPage(HTTP page)。 public void pletePage(HTTP page,boolean error)。 public boolean getRemoveQuery()。 public void SpiderComplete()。 } 如何提高程序性能 Inter 中拥有海量的 Web 页面,如果开发出高效的 Spider 程序是非常重要的。 下面就来介绍下几种提高性能的技术: Java 的多线程技术 线程是通过程序的一条执行路线。 多线程是一个程序同时运行多个任务的能力。 它是在一个程序的内部进行分工合作。 优化程序的通常方法是确定瓶颈并改进他。 瓶颈是一个程序中最慢的部分,他限制了其他任务的运行。 据个例子说明:一个 Spider 程序需要下载十个页面,要完成这一任务,程序必须向服务器发出请求然后接受这些网页。 当程序等待响应的时候其他任务不能执行,这就影 响了程序的效率。 如果用多线程技术可以让这些网页的等待时间合在一起,不用互相影响,这就可以极大的改进程序性能。 数据库技术 当 Spider 程序访问一个大型 Web 站点时,必须使用一种有效的方法来存储站点队列。 这些队列管理 Spider 程序必须维护大型网页的列表。 如果把他们放在内存中将会是性能下降,所以我们可以把他们放在数据库中减少系统资源的消基于的搜索引擎 第 14 页 共 34 页 耗。 网络机器人的代码分析 程序结构图如下: 程序代码实现如下: package news。 import。 import。 import。 import。 import。 import。 /** * 构造一个 Bot程序 */ public class Searcher implements ISpiderReportable { public static void main(String[] args) throws Exception { IWorkloadStorable wl = new SpiderInternalWorkload()。 Searcher _searcher = new Searcher()。 Spider _spider 基于的搜索引擎 第 15 页 共 34 页 = new Spider(_searcher, new HTTPSocket(), 100, wl)。 (100)。 ()。 } // 发现内部连接时调用, url表示程序发现的 URL,若返回 true则加入作业中,否则不加入。 public boolean foundInternalLink(String url) { return false。 } // 发现外部连接时调用, url表示程序所发现的 URL,若返回 true则把加入作业中,否则不加入。 public boolean foundExternalLink(String url) { return false。 } // 当发现其他连接时调用这个方法。 其 他连接指的是非 HTML网页,可能是 Email或者 FTP public boolean foundOtherLink(String url) { return false。 } // 用于处理网页,这是 Spider程序要完成的实际工作。 public void processPage(HTTP ) { (扫描网页: + ())。 new HTMLParse().start()。 } // 用 来请求一个被处理的网页。 public void pletePage(HTTP , boolean error) { } // 由 Spider程序调用以确定查询字符串是否应删除。 如果队列中的字符串应当删除,方法返回真。 public boolean getRemoveQuery() { return true。 } 基于的搜索引擎 第 16 页 共 34 页 // 当 Spider程序没有剩余的工作时调用这个方法。 public void spiderComplete() { } } 在本章 中,首先介绍了网络机器人的基本概念,然后具体分析了 Spider 程序的结构和功能。 在最后还结合具体代码进行了详细说明。 本人在编程中运用了 JavaTM技术,主要涉及到了 和 io 两个包。 此外还用了第三方开发包 Bot(由 Jeff Heaton 提供的开发包)。 基于的搜索引擎 第 17 页 共 34 页 第四章 基于 lucene 的索引与搜索 Lucene 全文检索 Lucene 是 Jakarta Apache 的开源项目。 它 是一个用 Java 写的全文索引引擎工具包,可以方便的嵌入到各种应用中实现针对应用的全文索 引 /检索功能。 Lucene 的原理分析 全文检索的实现机制 Lucene 的 API 接口设计的比较通用,输入输出结构都很像数据库的表 ==记录 ==字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到 Lucene 的存储结构 和接口中。 总体上看:可以先把 Lucene 当成一个支持全文索引的数据库系统。 索引数据源: doc(field1,field2...) doc(field1,field2...) \ indexer / _____________ | Lucene Index| / searcher \ 结果输出: Hits(doc(field1,field2) doc(field1...)) Document:一个需要进行索引的 “单元 ”,一个 Document由多个字段组成 Field: 字段 Hits: 查询结果集,由匹配的 Document组成 Lucene 的索引效率 通 常书籍后面常常附关键词索引表(比如:北京: 12, 34页,上海: 3,77页 „„ ),它能够帮助读者比较快地找到相关内容的页码。 而数据库索引能够大大提高查询的速度原理也是一样,想像一下通过书后面的索引查找的速度要比一页一页地翻内容高多少倍 „„ 而索引之所以效率高,另外一个原因是它是排好序的。 对于检索系统来说核心是一个排序问题。 基于的搜索引擎 第 18 页 共 34 页 由于数据库索引不是为全文索引设计的,因此, 使用 like %keyword%时,数据库索引是不起作用的 ,在使用 like查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊 查询的数据库服务来说, LIKE对性能的危害是极大的。 如果是需要对多个关键词进行模糊匹配: like%keyword1% and like %keyword2% ...其效率也就可想而知了。 所以建立一个高效检索系统的关键是建立一个类似于科技索引一样的反向索引机制,将数据源(比如多篇文章)排序顺序存储的同时,有另外一个排好序的关键词列表,用于存储关键词 ==文章映射关系,利用这样的映射关系索引: [关键词 ==出现关键词的文章编号,出现次数(甚至包括位置:起始偏移量,结束偏移量),出现频率 ],检索过程就是把 模糊查询变成多个可以利用索引的精确查询的逻辑组合的过程。 从而大大提高了多关键词查询的效率,所以,全文检索问题归结到最后是一个排序问题。 由此可以看出模糊查询相对数据库的精确查询是一个非常不确定的问题,这也是大部分数据库对全文检索支持有限的原因。 Lucene最核心的特征是通过特殊的索引结构实现了传统数据库不擅长的全文索引机制,并提。jsp基于产品的搜索引擎
相关推荐
并确认成本管理部经理审核 、 签字审核结算造价提供预算书竣工决算竣工财务决算报表提供竣工结算资料及结算书 工程 预算决算管理 流程 编号: JZYOPCM002 版号: A/0 页码: 第 4 页 共 6 页 预算阶段 步骤 说明 负责人 输出 自编或委托编制工程量清单及审核清单 施工图预算及工程量清单委托造价咨询机构编制;委 托的机构必须已经过政府有关部门认可且具备乙级以上(含乙级)资质证书。
第 4 页 共 6 页 根据以上数据,可以简单推出 660KV 直流高压线可以击穿最小 30 米的空气进行放电,而且强度较高,明显手麻发抖。 由于目前没有明确的 660KV 安全距离规定,根据相关法规: 《电 力设施保护条例实施细则》 第五条规定: 架空电力线路保护区,是为了保证已建架空电力线路的安全运行和保障人民生活的正常供电而必须设置的安全区域。 在厂矿、城镇、集镇、村庄等人口密集地区
额不足,则该项无法选择。 所有资料都准确完成后,最后点击下单就完成了本次都下单操作 ,开始进入其他的订单处理流程。 群发短信 在后台可以进行单个或者批量客户发送短信。 注意不要 短信内容不要包括非法关键字。 如果发送成功,系统会 返回成功信息,如果失败,会返回失败原因代码。 可以查询失败代码所对应的说明和 非法 关键字 列表,非法关键字会根据短信公司要求定期更新。 每 条 短信不超过 60 个
CAN 总线通讯接口,可适应 的通讯协议有 MODBUS、 ICE8705103。 利用通讯功能可与后台监控设备一同组成变电站综合自动化系统,实现“四遥”功能。 三、技术参数 额定数据 交流电流 5A, 1A 交流电压 100V 交流频率 50HZ 直流电压 220V, 110V 功率消耗 交流电流回路 Ie=5A 每相不大于 交流电压回路 U=100V 每相不大于 直流电源回路 正常工作
)丌同 K1 签证有 90 天有效期,在 90天内,海外的未婚夫(妻)必须和美国申请人完婚,如果想继续申请绿卡和在美国居住,必须提交 I485 调整身份,如果丌不在美国的申请人结婚,必须在 90 天内回国; K3 签证则 丌同二 K1 签证, K3 签证有两年有效期(目前有最新的客户出现半年期的 K3 有效期,也属二正常的情况),两年内可以自由往迒中国和美国乊间,幵丏可以合法的工作。
认真、按时、高效率地做好贵社领导及队长交办的具体工作。 为了工作的顺利进行及与信用社之间的工作协调,除了做好本职工作,积极配合信用社其他同事做好工作。 工作态度和勤奋敬业方面。 热爱自己的本职工作,能够正确认真地对待工作的每个细节,热心为农民服务,认真遵守劳动纪律,保证按时出勤,坚守岗位。 总结了这三个月来的工作,尽管有了一定的进步,但在很多方面还存在着不足。 比如有创 造性的工作思路还不是很多