基于Lucene4.6+Solr4.6+Heritrix1.14+S2SH实战开发从无到有垂直搜索引擎
基于Lucene和Heritrix的全文检索引擎的研究与应用
![基于Lucene和Heritrix的全文检索引擎的研究与应用](https://img.taocdn.com/s3/m/a76a34d5c8d376eeaeaa318d.png)
基于Lucene和Heritrix的全文检索引擎的研究与应用作者:卿秀华来源:《电脑知识与技术》2012年第13期摘要:Lucene是一个用Java写的全文索引引擎工具包,访问索引时间快,支持多用户访问,可以跨平台使用。
Heritrix是一个开源的由Java开发的Web网络爬虫框架,用户可以使用它从网络上抓取想要搜索的资源。
该文分析了Lucene的索引机制,探讨了Heritrix的结构框架,最后结合实例对基于Lucene和Heritrix技术的全文检索的应用进行深入研究。
关键词:Lucene;全文检索引擎;Heritrix中图分类号:TP393.07文献标识码:A文章编号:1009-3044(2012)13-2962-03Research and Application of Full-Text Searching Engine Based on Lucene and HeritrixQING Xiu-hua(School of Electronic & Electrical Engineering, Wuhan Textile University, Wuhan 430073, China)Abstract: Lucene is a full text indexing engine package written in Java language. It has high access speed, supports multi-user accesses and can be used in a cross platform way. Heritrix is an open source web spider explored by Java. Users can snatch information from Internet by using it. The searching mechanisms of Lucene were analysis and the frameworks of Heritrix were discussed in this paper. And finally, we developed an application to make a deep study to realize the full text searching based on Lucene.Key words: Lucene; full text searching engine; Heritrix1概述随着Internet网上的信息呈几何级数式的增长,搜索引擎已经成为用户浏览网络信息的首选。
Solr的原理及使用
![Solr的原理及使用](https://img.taocdn.com/s3/m/4db5e5e4f71fb7360b4c2e3f5727a5e9856a27d5.png)
Solr的原理及使⽤1.Solr的简介Solr是⼀个独⽴的企业级搜索应⽤服务器,它对外提供类似于Web-service的API接⼝。
⽤户可以通过http请求,向搜索引擎服务器提交⼀定格式的XML⽂件,⽣成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
2.⼯作原理solr是基于Lucence开发的企业级搜索引擎技术,⽽lucence的原理是倒排索引。
那么什么是倒排索引呢?接下来我们就介绍⼀下lucence倒排索引原理。
假设有两篇⽂章1和2:⽂章1的内容为:⽼超在卡⼦门⼯作,我也是。
⽂章2的内容为:⼩超在⿎楼⼯作。
由于lucence是基于关键词索引查询的,那我们⾸先要取得这两篇⽂章的关键词。
如果我们把⽂章看成⼀个字符串,我们需要取得字符串中的所有单词,即分词。
分词时,忽略”在“、”的“之类的没有意义的介词,以及标点符号可以过滤。
我们使⽤Ik Analyzer实现中⽂分词,分词之后结果为:⽂章1:⽂章2:接下来,有了关键词后,我们就可以建⽴倒排索引了。
上⾯的对应关系是:“⽂章号”对“⽂章中所有关键词”。
倒排索引把这个关系倒过来,变成: “关键词”对“拥有该关键词的所有⽂章号”。
通常仅知道关键词在哪些⽂章中出现还不够,我们还需要知道关键词在⽂章中出现次数和出现的位置,通常有两种位置:a.字符位置,即记录该词是⽂章中第⼏个字符(优点是关键词亮显时定位快);b.关键词位置,即记录该词是⽂章中第⼏个关键词(优点是节约索引空间、词组(phase)查询快),lucene中记录的就是这种位置。
加上出现频率和出现位置信息后,我们的索引结构变为:实现时,lucene将上⾯三列分别作为词典⽂件(Term Dictionary)、频率⽂件(frequencies)、位置⽂件 (positions)保存。
其中词典⽂件不仅保存有每个关键词,还保留了指向频率⽂件和位置⽂件的指针,通过指针可以找到该关键字的频率信息和位置信息。
C#编写了一个基于Lucene.Net的搜索引擎查询通用工具类:SearchEngineUtil
![C#编写了一个基于Lucene.Net的搜索引擎查询通用工具类:SearchEngineUtil](https://img.taocdn.com/s3/m/81a6cb8850e79b89680203d8ce2f0066f53364b0.png)
C#编写了⼀个基于的搜索引擎查询通⽤⼯具类:SearchEngineUtil 最近由于⼯作原因,⼀直忙于公司的各种项⽬(⼤部份都是基于spring cloud的微服务项⽬),故有⼀段时间没有与⼤家分享总结最近的技术研究成果的,其实最近我⼀直在不断的深⼊研究学习Spring、Spring Boot、Spring Cloud的各种框架原理,同时也随时关注着.NET CORE的发展情况及最新技术点,也在极客时间上订阅相关的专栏,只要下班有空我都会去认真阅读观看,纸质书箱也买了⼀些,总之近⼀年都是在通过:微信技术公众号(.NET、JAVA、算法、前端等技术⽅向)、极客时间、技术书箱不断的吸取、借鉴他⼈之精华,从⽽不断的充实提⾼⾃⼰的技术⽔平,所谓:学如逆⽔⾏⾈,不进则退,⼯作中学习,学习后⼯作中运⽤,当然写⽂章分享是⼀种总结,同时也是“温故⽽知新”的最佳应⽤。
using .Analysis.PanGu;using .Documents;using .Index;using .QueryParsers;using .Search;using .Store;using NLog;using PanGu;using PanGu.HighLight;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Reflection;using System.Text;namespace mon{/// <summary>/// Lucene 搜索引擎实⽤⼯具类/// Author:zuowenjun/// </summary>public class SearchEngineUtil{/// <summary>/// 创建并添加索引记录/// </summary>/// <typeparam name="TIndex"></typeparam>/// <param name="indexDir"></param>/// <param name="indexData"></param>/// <param name="setDocFiledsAction"></param>public static void AddIndex<TIndex>(string indexDir, TIndex indexData, Action<Document, TIndex> setDocFiledsAction){//创建索引⽬录if (!System.IO.Directory.Exists(indexDir)){System.IO.Directory.CreateDirectory(indexDir);}FSDirectory directory = FSDirectory.Open(new DirectoryInfo(indexDir), new NativeFSLockFactory());bool isUpdate = IndexReader.IndexExists(directory);if (isUpdate){//如果索引⽬录被锁定(⽐如索引过程中程序异常退出),则⾸先解锁if (IndexWriter.IsLocked(directory)){IndexWriter.Unlock(directory);}}using (IndexWriter writer = new IndexWriter(directory, new PanGuAnalyzer(), !isUpdate, IndexWriter.MaxFieldLength.UNLIMITED)){Document document = new Document();setDocFiledsAction(document, indexData);writer.AddDocument(document);writer.Optimize();//优化索引}}/// <summary>/// 删除索引记录/// </summary>/// <param name="indexDir"></param>/// <param name="keyFiledName"></param>/// <param name="keyFileValue"></param>public static void DeleteIndex(string indexDir, string keyFiledName, object keyFileValue){FSDirectory directory = FSDirectory.Open(new DirectoryInfo(indexDir), new NativeFSLockFactory());if (!IndexReader.IndexExists(directory)){return;}using (IndexWriter iw = new IndexWriter(directory, new PanGuAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED)){iw.DeleteDocuments(new Term(keyFiledName, keyFileValue.ToString()));iw.Optimize();//删除⽂件后并⾮从磁盘中移除,⽽是⽣成⼀个.del的⽂件,需要调⽤Optimize⽅法来清除。
solr使用手册
![solr使用手册](https://img.taocdn.com/s3/m/ecd6dd2883c4bb4cf7ecd196.png)
Solr全文检索服务一、企业站内搜索技术选型⏹在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。
1.使用Lucene实现?什么是Lucene ?⏹Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。
Lucene目前是Apache Jakarta(雅加达) 家族中的一个开源项目。
也是目前最为流行的基于Java开源全文检索工具包。
目前已经有很多应用程序的搜索功能是基于Lucene ,比如Eclipse 帮助系统的搜索功能。
Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索●单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议采用。
2.使用Google或Baidu接口?●通过第三方搜索引擎提供的接口实现站内搜索,这样和第三方引擎系统依赖紧密,不方便扩展,不建议采用。
3.使用Solr实现? Solr是什么?⏹Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。
Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
⏹Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引。
Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr返回Xml、json等格式的查询结果进行解析,组织页面布局。
Lucene 基于java的全文搜索引擎简介
![Lucene 基于java的全文搜索引擎简介](https://img.taocdn.com/s3/m/71cbd60bbb68a98271fefa3c.png)
Lucene:基于Java的全文检索引擎简介文章来源/tech/lucene.htmlLucene是一个基于Java的全文索引工具包。
另外,如果是在选择全文引擎,现在也许是试试Sphinx的时候了:相比Lucene速度更快,有中文分词的支持,而且内置了对简单的分布式检索的支持;基于Java的全文索引/检索引擎——LuceneLucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。
Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。
他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。
Lucene的发展历程:早先发布在作者自己的,后来发布在SourceForge,2001年年底成为APACHE 基金会jakarta的一个子项目:/lucene/已经有很多Java项目都使用了Lucene作为其后台的全文索引引擎,比较著名的有:public class IndexFiles {//使用方法:: IndexFiles [索引输出目录] [索引的文件列表] ...public static void main(String[] args) throws Exception {String indexPath = args[0];IndexWriter writer;//用指定的语言分析器构造一个新的写索引器(第3个参数表示是否为追加索引) writer = new IndexWriter(indexPath, new SimpleAnalyzer(), false);for (int i=1; i<args.length; i++) {System.out.println("Indexing file " + args[i]);InputStream is = new FileInputStream(args[i]);//构造包含2个字段Field的Document对象//一个是路径path字段,不索引,只存储//一个是内容body字段,进行全文索引,并存储Document doc = new Document();doc.add(Field.UnIndexed("path", args[i]));doc.add(Field.Text("body", (Reader) new InputStreamReader(is)));//将文档写入索引writer.addDocument(doc);is.close();};//关闭写索引器writer.close();}}索引过程中可以看到:∙语言分析器提供了抽象的接口,因此语言分析(Analyser)是可以定制的,虽然lucene缺省提供了2个比较通用的分析器SimpleAnalyser和StandardAnalyser,这2个分析器缺省都不支持中文,所以要加入对中文语言的切分规则,需要修改这2个分析器。
Solr全文检索框架
![Solr全文检索框架](https://img.taocdn.com/s3/m/978edd759a6648d7c1c708a1284ac850ad02043e.png)
Solr全⽂检索框架概述: 什么是Solr?Solr是Apache下的⼀个顶级开源项⽬,采⽤Java开发,它是基于Lucene的全⽂搜索服务.Solr可以独⽴运⾏在Jetty.tomcat.webLogic.webShell 等这些Servlet容器中. 全⽂检索服务(也叫做全⽂搜索): 服务是War包.ES框架也是基于Lucene,Lucene(是⼯具包 jar) 服务器: Tomcat Jetty(内嵌服务器) 免费的(私企) WebLogic(Oracle)政府 Oracle WebShell(IBM) 收费的 DB2 内嵌服务器和外部的服务器 Tomcat(外部) /webapps/war War/lib/jetty.jar(内嵌) 稳定性差了点. 测试环境下使⽤.1.开发环境 (软件开发⼯程师) jetty2.测试环境 (测试⼯程师) ⿊盒⽩盒 (既能够测试功能,⼜能测试代码质量) jetty3.⽣产环境 (线上运营) 京东,淘宝等可以开始卖货了. tomcat 使⽤Solr进⾏创建索引和搜索索引的实现⽅法很简单,如下:客户端: PHP C++ .NET JAVA服务端:(War) 在tomcat上运⾏, 安装jdk, HTTP协议要使⽤Solr的两步:1. 安装服务端(服务端+索引库)2.java写客户端(java代码可以写客户端,浏览器也可以充当客户端)Solr的java客户端: 1.创建索引(包含了删,加,改): java客户端以POST⽅式,发送xml格式字符串给服务端, 服务端返回xml格式字符串. 2.搜索索引: java客户端Get⽅式发送json或者xml 返回值json或者xml 后台管理中⼼(浏览器打开界⾯) 管理索引 删除 添加 修改 查询 (上⾯的统称为管理) 创建索引:客户端(可以是浏览器可以是java程序)⽤POST⽅法向Solr服务器发送⼀个描述Field及其内容的XML⽂档,Solr服务器根据xml⽂档添加,删除,更新索引. 搜索索引:客户端(可以是浏览器可以是JAVA程序)⽤GET⽅法向Solr服务器发送请求,然后对Solr服务器返回XML.json等格式的查询结果进⾏解析.Solr不提供构建页⾯UI的功能,Solr提供了⼀个管理界⾯,通过管理界⾯可以查询Solr的配置和运⾏情况. Solr是⼀个可以独⽴运⾏的搜索服务器,使⽤solr进⾏全⽂检索服务的话,只需要通过http请求访问该服务器即可.Solr和Lucene的区别? Lucene是⼀个开放源代码的全⽂检索引擎⼯具包,它是⼀个完整的全⽂检索应⽤.Lucene仅提供了完整的查询引擎和索引引擎,⽬的是为软件开发⼈员提供⼀个简单易⽤的⼯具包,以⽅便的在⽬标系统中实现全⽂检索的功能,或者以Lucene为基础构建全⽂检索应⽤. Solr的⽬标是打造⼀款企业级的搜索引擎系统,它是基于Lucene⼀个搜索引擎服务.可以独⽴运⾏,通过Solr可以⾮常快速的构建企业的搜索引擎,通过Solr也可以⾼效的完成站内搜索功能.原来的⽅式,是直接通过web服务器,然后通过Lucene直接使⽤索引库,但是如果不使⽤Lucnene的时候,就直接使⽤Solr来连接索引库.相对来说Lucene的速度更快,简单的说 :1.Lucene 是⼯具包是jar包2.Solr是索引引擎服务 War3.Solr是基于Lucene(底层是由Lucene写的)4.上⾯⼆个软件都是Apache公司由java写的在Solr的后端界⾯在Solr的集群的时候,会有Master(主⼈) Slave(奴⾪)Solr基于Lucene ID域必须有不可重复字符串类型(中⽂正数) 名称域 描述域 价格域 路径域有事务提交事务1.主动提交2.⾃动提交,提前设置提交时间毫秒Overwrite当ID相同时,可以进⾏覆盖Boost 相关度什么是相关度?相关度 = 词出现的次数*Boost相关度越⾼,在查询的时候,越靠前.。
银河麒麟服务器操作系统 V4 solr 软件适配手册说明书
![银河麒麟服务器操作系统 V4 solr 软件适配手册说明书](https://img.taocdn.com/s3/m/5adce3be760bf78a6529647d27284b73f342366f.png)
银河麒麟服务器操作系统V4 solr软件适配手册天津麒麟信息技术有限公司2019年6月目录目录 (I)1概述 (2)1.1系统概述 (2)1.2环境概述 (2)1.3SOLR软件简介 (2)1.4SOLR优点 (2)1.5SOLR架构及原理 (3)1.5.1全文检索 (3)1.5.2索引创建和搜索过程 (3)2SOLR软件适配 (4)1)下载并解压SOLR (4)2)下载TOMCAT (4)3)准备依赖包 (4)4)配置SOLRHOME (5)5)配置TOMCAT (5)3验证SOLR部署 (6)1概述1.1系统概述银河麒麟服务器操作系统主要面向军队综合电子信息系统、金融系统以及电力系统等国家关键行业的服务器应用领域,突出高安全性、高可用性、高效数据处理、虚拟化等关键技术优势,针对关键业务构建的丰富高效、安全可靠的功能特性,兼容适配长城、联想、浪潮、华为、曙光等国内主流厂商的服务器整机产品,以及达梦、金仓、神通、南大通用等主要国产数据库和中创、金蝶、东方通等国产中间件,满足虚拟化、云计算和大数据时代,服务器业务对操作系统在性能、安全性及可扩展性等方面的需求,是一款具有高安全、高可用、高可靠、高性能的自主可控服务器操作系统。
1.2环境概述服务器型号长城信安擎天DF720服务器CPU类型飞腾2000+处理器操作系统版本Kylin-4.0.2-server-sp2-2000-19050910.Z1内核版本 4.4.131solr版本7.7.21.3solr软件简介Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service 的API接口。
用户可以通过http请求,向搜索引擎服务器提交一定格式的XML 文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。
同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
Lucene视频教程 SSH框架实例入门教程
![Lucene视频教程 SSH框架实例入门教程](https://img.taocdn.com/s3/m/5b649c8de53a580216fcfe83.png)
Lucene视频教程-基于Lucene4.6+Solr4.6+Heritrix1.14+S2SH实战开发从无到有垂直搜索引擎一、Lucene视频教程课程内容介绍:1、整体思路整个课程,按照一个从无到有的过程来展开。
所有的数据,来自于互联网,用heritrix去抓取。
对于抓取的数据,进行去重,去标签,然后利用lucene 和solr 进行索引和搜索。
如下图所示:在网页去重、解析html讲解java开发,在搜索服务工具的封装中,讲解设计模式,项目的前端采用jquery,后台采用SSH2。
2、Lucene视频教程内容安排:一、理论部分:2.1、搭建heritrix1.什么是网络爬虫2.网络爬虫能做什么3.Heritrix原理4.Heritrix搭建2.2、如何进行主题抓取1.什么是主题抓取2.主题抓取的意义3.主题抓取的策略4.如何用heritrix进行主题抓取2.3、heritrix优化1. ELFHash算法2.关于robot.txt3.将heritrix打包成工具2.4、解析html页面1.java正则表达式2.基于模板获取网页内容3.利用htmlparser解析html2.5、中文分词介绍1.Lucene自带的分词2.ICTCLAS3.IK4.利用机器学习的算法识别中文文章中的领域词2.6、网页去重1.网页去重的意义2.网页去重的主要方法3.什么是tf*idf4.基于指纹算法的网页去重2.7、Lucene4.6快速索引与搜索1.如何用lucene创建索引2.如何用lucene搜索结果3.Lucene中intfield怎么搜索4.Lucene的结果高亮显示2.8、Lucene4.6索引的相关操作1.创建索引2.修改索引3.删除索引4.索引优化2.9、Lucene4.6的query、及queryparser1.TermQuery2.BooleanQuery3.TermRangeQuery4.NumericRangeQuery5.PrefixQuery6.PhraseQuery7.MultiPhraseQuery8.FuzzyQuery9.WildcardQuery10.queryparser2.10、Lucene的Filter及自定义排序1.Filter2.Lucene自带排序及指定权重3.Lucene自定义排序2.11、Solr快速索引与搜索1.什么是solr2.为什么工程中要使用solr3.Solr的原理4.如何在tomcat中运行solr5.如何利用solr进行索引与搜索2.12、Solr的查询及Filter1.solr的各种查询2.solr的Filter3.solr的排序4.solr的高亮2.13、Solr的facet介绍1.solr的某个域统计2.solr的范围统计2.14、Solrcloud集群搭建1.zookeeper简介2.solrcloud集群搭建2.15、搜索服务的工具封装1.工厂模式2.封装搜索服务_lucene3.封装搜索服务_solr4.将lucene与solr封装成可以配置的工具,可以支持任何业务系统二、Lucene视频教程项目部分:2.16、Lucene视频教程项目实战1.项目需求分析及框架选择2.Struts 2.3.16介绍3.Struts 2.3.16整合Spring4.0.14.Spring 4.0.1整合hibernate 4.3.15.利用jquery-easyui 1.3.5 做后台管理页面6.Heritrix 在工程中的运用7.封装好的搜索框架在工程中的运用8.Flexpaper模仿百度文库9.文件上传10.相关代码编写11.搜索结果优化12.项目总结三、Lucene视频教程课程亮点3.1 对heritrix进一步封装,可以按照需求配置,单独运行。
Solrj操作Solr4
![Solrj操作Solr4](https://img.taocdn.com/s3/m/4bc7c4067cd184254b3535dd.png)
Solrj操作Solr4.0 中CloudSolrServer的一般过程一、准备工作:创建eclipse工程1. 下载solr4.0_src的源码包,解压后,进入目录中,在命令行执行:ant eclipse 则可以生成一个eclipse工程,会在目录中多了关于eclipse工程的文件:.classpath 和 .project;在eclipse导入该生成的工程(lucene-solr),工程名为lucene-solr,可以看到其全部源码;编写自己的代码,就能测试了!注意:需要安装ant 工具,以及ivy包,搜一下,去appache下来,配置好,才能编译通过。
Ant编译时间有点长。
关于ant(another neat tool)不再过多介绍,网上有很多教程。
只要明白ant相当于一个make的工具,其解析biuld.xml文件的相关指令。
2. 下载solr4.0 zip 包,将其中的所有jar包都添加你的eclipse工程中。
(之所以是所有,以防万一编译不过,省的猜缺少那个包,找呀找的!)3. 结合网上关于solr的搭建教程,进行搭建solr,可以用tomcat,也可以用jetty。
我用的jetty+zookeeper,(由于对tomcat的集群配置不了解),zookeeper是独立的zookeeper,而不是jetty内嵌的zookeeper;可以从appache上直接下载!4. 进行相关集群的配置,配置集群,用在工程中用solrj操纵solrCloud二、用solrj操纵CloudSolrServer的一般步骤1. 创建CloudSolrServer的实例:2种方式:(a) CloudSolrServer cloudSolrServer= new CloudSolrServer(zkHostURL);(b) CloudSolrserver.cloudSolrServer = newCloudSolrServer(zkHostURL,lbHttpSolrServer);2. 对CloudSolrServer实例进行设置(a) cloudSolrServer.setDefaultCollection(defaultCollectionName);(b) cloudSolrServer.setzkClientTimeout(zkClientTimeout);(c) cloudSolrServer.setzkConnectTimeout(zkConnectionTimeout);3. 将cloudSolrServer实例连接到zookeeper(a) cloudSolrServer.connect();4. CloudSolrServer 的实例cloudSolrServer 实例化、连接完成,进而可以对其进行add、query、delete操作。
Solr4.7安装及集成
![Solr4.7安装及集成](https://img.taocdn.com/s3/m/f6ee372383c4bb4cf7ecd154.png)
Solr1 Solr4.7 Tomcat部署安装一.下载solr-4.7.1/dyn/closer.cgi/lucene/solr/4.7.1环境需求:java 1.6版本以上;solr运行需要java serverlet 容器,默认使用jetty,或者tomcat,jboss等等。
二.Tomcat部署solr:1. 安装好jdk 1.6以上,安装好tomcat(我用是apache-tomcat-7.0.6),并配置环境变量。
2.将解压包中的solr-4.7.1/dist/solr-4.7.1.war复制到tomcat_dir/webapps /目录,并命名为solr.war。
3.a.将solr-4.7.1/example/lib/ext/目录下的jar文件复制到tomcat/lib目录下;b.将solr-4.7.1/example/resources/下的log4j.properties文件复制到tomcat_dir/lib目录下;c.把solr-4.7.1/example/solr,复制到tomcat_di r/bin下。
4.修改tomcat_dir/conf/server.xml<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"URIEncoding="UTF-8" />5.创建solr.xml,存放在路径:tomcat/conf/Catalina/localhost/solr.xml,内容:<Context path="/solr" docBase="E:\Tomcat7.0\webapps\solr.war"debug="0" crossContext="true"><Environment name="solr/home" type="ng.String" value="E:\Tom cat7.0\bin\solr\"override="true" /></Context>注意:上面的docBase和value路径中不能存在中文字符,否则会出现404错误。
毕业设计论文--基于Lucene与Heritrix的搜索引擎构建
![毕业设计论文--基于Lucene与Heritrix的搜索引擎构建](https://img.taocdn.com/s3/m/06494446e45c3b3567ec8b36.png)
本科毕业设计(论文)基于Lucene与Heritrix的搜索引擎构建学院(系):计算机科学与工程专业:软件工程学生姓名:学号:指导教师:评阅教师:完成日期:摘要在互联网蓬勃发展的今天,互联网上的信息更是浩如烟海。
人们在享受互联网带来的便利的同时,却面临着一个如何在如此海量的内容中准确、快捷地找到自己所需要的信息的问题,由此互联网搜索引擎应运而生。
本文在对搜索引擎的原理、组成、数据结构和工作流程等方面深入研究的基础上,对搜索引擎的三个核心部分即网络蜘蛛、网页索引和搜索的分析及实现过程进行阐述。
网络蜘蛛部分采用了基于递归和归档机制的Heritrix网络爬虫;网页索引部分利用开源的Lucene引擎架构设计并实现了一个可复用的、可扩展的索引建立与管理子系统;搜索部分在Ajax技术支持上,设计并实现了一个灵活、简洁的用户接口。
本系统具有抓取网页、建立和管理索引、建立日志以及搜索信息等功能,具备一定的应用前景。
关键词:搜索引擎;中文分词;索引The Construction of Search Engine Based on Lucene and HeritrixAbstractThe contents on the Web are increasing exponentially as the rapid development of the Internet. A problem how to obtain the useful information from vast contents quickly and accurately is facing us while people are enjoying the convenience of the Internet. The solver of this problem is Web Search Engine.The analysis and implementation process of three basic components of search engine(Crawler, Indexer and Searcher) is described in this paper on the basis of further study on the principles, composition, data structure and work flow of search engine. The crawler component is implemented with Heritrix crawler based on the mechanism of recursion and archiving; A reusable, extensible index establishment and management subsystem are designed and implemented by open-source package named “Lucene” in the indexer component; The Searcher component based on the Ajax technology is designed and realized as a flexible, concise user interface. The system has some functions, such as crawling web page, establishment and management index, establishment log and search information, it has a certain application prospect.Key Words:Search Engine;Chinese Word Segmentation;Index目录摘要 (I)Abstract (II)1 绪论 (1)1.1 项目背景 (1)1.2 国内外发展现状 (1)2 系统的开发平台及相关技术 (3)2.1 系统开发平台 (3)2.2 系统开发技术 (3)2.2.1 Heritrix网络爬虫简介 (3)2.2.2 Lucene技术简介 (4)2.2.3 Ajax技术简介 (4)3 系统分析与设计 (6)3.1 系统需求分析 (6)3.1.1 系统架构分析 (6)3.1.2 系统用例模型 (6)3.1.3 系统领域模型 (10)3.2 系统概要设计 (11)3.3 系统详细设计 (12)3.3.1 索引建立子系统 (13)3.3.2 用户接口子系统 (17)4 系统的实现 (18)4.1 系统包框架的构建 (18)4.1.1 索引建立子系统 (18)4.1.2 用户接口子系统 (19)4.2 系统主要功能实现 (19)4.2.1 索引建立子系统 (19)4.2.2 用户接口子系统 (22)结论 (24)参考文献 (25)致谢 (26)1 绪论1.1 项目背景1994年左右,万维网(world wide web)出现了。
solr 默认打分规则
![solr 默认打分规则](https://img.taocdn.com/s3/m/5afa7c56001ca300a6c30c22590102020640f257.png)
solr 默认打分规则【原创版】目录1.Solr 简介2.Solr 默认打分规则3.Solr 打分规则的调整4.Solr 在搜索中的应用正文1.Solr 简介Solr 是一个开源的搜索引擎,它基于 Apache Lucene 库构建。
Solr 提供了一个高度可扩展且可定制的搜索平台,广泛应用于企业级搜索、网站搜索、文献检索等领域。
Solr 支持多种查询语言,如 SQL、JSON 等,并提供了丰富的查询功能,如分页、过滤、排序等。
2.Solr 默认打分规则Solr 默认采用 TF-IDF(Term Frequency-Inverse Document Frequency)算法作为打分规则。
TF-IDF 是一种常用的信息检索算法,它综合考虑了词汇在文档中的出现频率以及词汇在索引库中的稀有程度,从而为每个文档分配一个得分。
3.Solr 打分规则的调整Solr 提供了一系列参数用于调整打分规则,以满足不同场景的需求。
以下是一些常用的参数:- docValueCount:控制是否计算文档值(doc values)以及其对查询结果的影响。
- disableCoord:禁用坐标查询(coord),从而降低查询性能,但可以提高结果的相关性。
- maxCoord:限制坐标查询的阶数,以减少计算复杂度。
- coordFactor:调整坐标查询的得分权重。
4.Solr 在搜索中的应用Solr 在搜索领域的应用非常广泛,例如:- 企业级搜索:Solr 可以快速地为大型网站或企业内部系统提供高度可定制的搜索功能。
- 文献检索:Solr 可以用于构建文献检索系统,提供高效的全文检索功能。
- 电商搜索:Solr 可以为电商平台提供实时的商品搜索功能,提高用户体验。
总之,Solr 作为一个强大的搜索引擎,其默认打分规则采用 TF-IDF 算法,同时提供了丰富的参数用于调整打分规则。
基于Lucene和Heritrix的全文搜索引擎的设计与实现
![基于Lucene和Heritrix的全文搜索引擎的设计与实现](https://img.taocdn.com/s3/m/d679f5e1102de2bd9605885f.png)
h t m l 。它能超高速解 析 H T M L , 而且不会出错 。 可 以说 , H T ML P a r s e r 就 是 目前 最好 的 H T ML解 析 和分 析 的工
具 无 论 你 是 想 抓 取 网 页 数 据 还 是 改 造 H T ML的 内 容. H T ML P a r s e r 都是理想之选 。 H T MⅡ. a r s e r 采 用 了经 典 的 C o m p o s i t e模 式 .通 过 R e ma r k N o d e 、 T e x t N o d e 、 T a g N o d e A b s t r a c t N o d e和 T a g 来 描述 H T ML页 面各 元 素 。 以 下 代码 获 取 网 页 的 标 题 :
图如图 1 所 示
擎 的技术 已经不再是秘密 了 .使用开 源软件可 以迅速
地 搭 建 一 个 属 于 自己 的搜 索 引擎
1 全 文 搜 索 引擎 简 介
搜 索引 擎 主要 指利 用 网 络 自动 搜 索 技 术 软 件 或人 工 方式 . 对 I n t e me t 网络 资 源 进 行 收 集 、 整理与组织 , 并 提 供 检 索 服务 的一 类 信 息 服 务 系统
s模 式 实现 一 个 全 文 搜 索 引 擎 。 关 键 词 :全 文搜 索 g 1 擎; L u c e n e ; He i f t r i x; HT ML P a r s e r ;网络 爬 虫
0 引 言
随着信息时代 的来临 . 面对 网上海 量的信息 . 为了
又快 又准地查找到需要 的信息 .使用搜 索引擎无疑会 成倍地提 高检索效率 . 有效地降低成本 。 对广大 网民而 言. 搜索 引擎是获取互联 网信息 的最有力 工具 . 也是互
使用Heritrix和Lucence的全文检索解决方案
![使用Heritrix和Lucence的全文检索解决方案](https://img.taocdn.com/s3/m/01d30a24e2bd960590c6774d.png)
方便 的根 据 实 际 需 求 实 现 抓 取 逻 辑 . r rx具 Hei i t
用 L cn l来 分 析 网页并建 立索 引 、 行检 索. u e e 3 进
奉 课题 的任 务 是 对 校 园 网站 建 立 全文 索 引 , 所 要 完成 工作 主要有 三个 : 提取 网页 内容 、 中文 分 词、 建立 索 引库 . 根据 校 园 网络 的特 性 , 以使 用 可 网络爬 虫每 月做 一 次 全 网更 新 , 天做 一 次登 记 每 站点 更新 , 这样 能 够很 好 地 跟 上 校 内各 部 门网 站 的更新 速度 , 而 能够 有 效 地 收集 校 内各 站 点 的 从 内容数 据. 在对 于校 园 网 内容进 行 索 引 时 , 由索 引 程 先 序 对使 用 网络爬 虫 抓 取 的 网 页进 行 分 析 , 中得 从 到 网页中 的重 要 信 息 , 要 有 网 页 的 UR 页 面 主 I
第 三 项 “ e c Wr es 内 删 除 默 认 的 “ r. r Sl t e i r” t o g a—
c ie ca e. i r AR W r eP o es , 加 hv. rwlr wr e. C i r rc s” 增 t t
“r o g.a c v .c a e .wrt r r hi e r wl r ie .M i r r rt r o r o W ie Pr —
h 咖曲e d a
me-g t ra ̄
? H fP ed r 1r ha e . s
始数 据处 理成 一个 高效 的交差 引用 的查 找结 构 以 便于 快速 的搜 索. u e e提供 的服务 实 际 包含 两 L cn
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最有前途的软件开发技术——搜索引擎技术
搜索引擎作为互联网发展中至关重要的一种应用,已经成为互联网各个领域的制高点,其重要性不言而喻。
搜索引擎领域也是互联网应用中不多见的以核心技术作为其命脉的领域,搜索引擎各个子系统是如何设计的?这成为广大技术人员和搜索引擎优化人员密切关注的内容。
随着互联网行业兴起,大数据时代的到来,搜索引擎开发成为一项极富含金量的工作,市场对搜索软件开发工程师的需求极其旺盛。
大型搜索门户需要大量专门的搜索软件开发人才,而众多中小型网站及企业也需要垂直搜索,网站搜索,全文检索,知识库系统等非结构化数据开发软件工程师
在互联网上说门槛,就是比资源。
垂直搜索也是这样,能否提供全面权威的行业信息,能否拥有行业资源是垂直搜索引擎发展的门槛。
换句化说,垂直门户是垂直搜索血统最近的父亲。
作为房产行业的搜房网就是一个垂直门户,在房产领域没有谁比我们更清楚什么是垂直搜索了未来5年中,我们见到的最大变化将是人们使用电脑的方式将有所不同,移动电话将变成在互联网上寻找信息的最常见手段。
到那时,大多数问题都最好通过声音进行问答。
搜索引擎公司将成为日常生活中更不可或缺的部分,它们的影响力最终将对其他一些为创造或传播信息而存在的公司会产生极大的促进甚至替代性的作用。
网络时代的信息量每8个月翻一番,如今的网页以100亿来计算;网络搜索已成为仅次于电子邮件的第二大网络应用。
2005年中国互联网发展状况统计报告中也指出,用户在互联网上获取信息最常用的方法中,通过搜索引擎查找相关的网站占58.2%。
对于有效的搜索引擎技术的研究将具有巨大的学术及商业价值。

垂直搜索引擎是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,是对网页库中的某类专门的信息进行一次整合,定向分字段抽取出需要的数据进行处理后再以某种形式返回给用户。
垂直搜索是相对通用搜索引擎的信息量大、查询不准确、深度不够等提出来的新的搜索引擎服务模式,通过针对某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务。
其特点
就是“专、精、深”,且具有行业色彩,相比较通用搜索引擎的海量信息无序化,垂直搜索引擎则显得更加专注、具体和深入。
垂直搜索引擎原理图
什么是垂直搜索引擎 最有前途的软件开发技术搜索引擎技术 开源爬虫: Heritrix 1.14.4 安装/使
用
1、整体思路
整个课程,按照一个从无到有的过程来展开。
所有的数据,来自于互联网,用heritrix 去抓取。
对于抓取的数据,进行去重,去标签,然后利用lucene 和solr 进行索引和搜索。
如下图所示:
整个课程的最大特点是内容新颖全面而又通俗易懂。
对于实际搜索引擎所涉及的各种核心技术都有全面细致的介绍,除了作为搜索系统核心的网络爬虫、索引系统、排序系统、链接分析及用户分析外,还包括网页反作弊、缓存管理、网页去重技术等实际搜索引擎必须关注的技术,同时用相当大的篇幅讲解了云计算与云存储的核心技术原理及实现。
整个课程的另一亮点是:整个项目的构建全部采用最新技术,包括但不限于以下技术:struts 2.3.16 +spring 4.0.1 +hibernate 4.3.1+jquery-easyui 1.3.5+lucene 4.6.0+solr 4.6.0+Heritrix1.14并对其做了二次封装。
为了增进学员的理解,课程大量引入形象的图片来讲解算法原理,相信读者会发现原来搜索引擎的核心技术理解起来比原先想象的要简单得多。
本课程适合于各个层次的有志于从事搜索引擎技术的Java开发人员,只要求开发人员具备基础的JAVA基础及B/S开发经验即可,对于初级程序员来说,可以在短时间内迅速提高开发能力,掌握流行的技术,把握搜索引擎技术的发展脉络。
对于中高级程序员来说,本课程可以在短时间内快速提升个人的搜索引擎方面的开发能力。
1 想要从事搜索引擎开发的Java技术人员
2 学习该课程你可以快速掌握到网络爬虫、中文分词、网页去重、搜索优化、大数据处理等多方面的技能
3 加强开发的内功修炼。
4 深入理解搜索引擎的原理与相关开发技术
5 掌握搜索引擎开发技术点,能够独立开发基于lucene技术的搜索系统
亮点一、对heritrix进一步封装,可以按照需求配置,单独运行。
亮点二、对lucene 4.6.0与solr 4.6.0进行封装,通过配置就可以对绝大多数的业务系统进行数据库及其文件的索引、搜索。
亮点三、对目前最新的ssh(struts 2.3.16 spring 4.0.1 hibernate 4.3.1)整合,并结合目前最新的版本的jquery-easyui 1.3.5,构建了一个完整的垂直搜索引擎。
亮点四、整个课程的理论部分,参看了大量的核心期刊论文,并针对目前中文分词,用纯java代码实现了一种基于无监督的识别方法。
另外,实现了文本的特征抽取TF*IDF算法,最小编辑距离算法,文本相似度算法(传统的夹角余弦及指纹算法)。
掌握此项技术后可以从事但不限于以下职位的工作:
高级搜索引擎开发工程师
行业(垂直)搜索引擎开发工程师
搜索引擎后台开发工程师
搜索引擎Web开发工程师
网络爬虫开发工程师
学完此门课程后,您也可以参与或独立完成具有以下功能的企业级应用:
一、桌面搜索引擎开发

二、百度文库类资源库项目
三、开发自己的搜索门户

四、利用网络爬虫抓取数据

一、Q: 这门课程我没有基础可以学吗?
A:不行,学习这门课程必须得具体Java语言基础,会使用SSH框架开发B/S应用
二、Q:这门课程适合于哪些人?
A:本课程适合于各个层次的有志于从事搜索引擎技术的Java开发人员,只要求开发人员具备基础的JAVA基础及B/S开发经验即可,对于初级程序员来说,可以在短时间内迅速提高开发能力,掌握流行的技术,把握搜索引擎技术的发展脉络。
对于中高级程序员来说,本课程可以在短时间内快速提升个人的搜索引擎方面的开发能力。
三、Q:课程涉及到哪些技术,版本是多少?
A:课程涉及到以下技术,且都是目前最新版本:
1. lucene 版本是4.6.0
2. solr 版本是4.6.0
3. Heritrix 版本是1.14
4. Struts 2.3.16
5. Spring 4.0.1
6. Hibernate 4.3.1
7. jquery-easyui 版本是1.3.5
更多免费资料视频分享请加群106537671
四、Q:学完这个课程后,可以从事哪些方面的工作?
A:学完这个课程后,可以从事以下方面的工作,包括但不限于:
高级搜索引擎开发工程师
行业(垂直)搜索引擎开发工程师
搜索引擎后台开发工程师
搜索引擎Web开发工程师
网络爬虫开发工程师。