第一篇:lucene工作总结
Lucene工作总结
关键字: lucene总结
公司项目:portal中期刊文章内容作为大字段存储在Oracle中,首页有一个搜索功能:要求将所有包括搜索字段的文章的标题列出来(文章的内容存储在Oracle的CLOB字段中),也就是要用Lucene实现对数据库的大字段进行索引(索引通过计划任务定时建立索引)和搜索。。
==================定时建立索引文件:===============
Main方法: Java代码
1.package zxt.lucene.index;2.3.import java.util.Timer;4.public class IndexerServer { 5.6.7./** 8.* 定时调用建立索引任务 9.* @author wulihai 10.* @create 2009-06-02 11.*/ 12.public static void main(String[] args){ 13.String propFile = “directory.properties”;14.Config.setConfigFileName(propFile);15.Timer timer = new Timer();16.LuceneDBIndexerTask luceneTask=LuceneDBIndexerTask.getInstance();17.timer.scheduleAtFixedRate(luceneTask, 0,DataTypeUtil.toLong(Constant.CREATE_INDEX_SLEEP_TIME));18.} 19.20.}
定时调用建立索引任务: Java代码
1.package zxt.lucene.index;2.3.import java.util.Timer;4.public class IndexerServer { 5.6.7./** 8.* 定时调用建立索引任务 9.* @author wulihai 10.* @create 2009-06-02 11.*/ 12.public static void main(String[] args){ 13.String propFile = “directory.properties”;14.Config.setConfigFileName(propFile);15.Timer timer = new Timer();16.LuceneDBIndexerTask luceneTask=LuceneDBIndexerTask.getInstance();17.timer.scheduleAtFixedRate(luceneTask, 0,DataTypeUtil.toLong(Constant.CREATE_INDEX_SLEEP_TIME));18.} 19.20.}
建立索引的核心实现: Java代码
1.package zxt.lucene.index;2.import java.io.BufferedReader;3.import java.io.File;4.import java.io.IOException;5.import java.io.StringWriter;6.import java.sql.Connection;7.import java.sql.DriverManager;8.import java.sql.ResultSet;9.import java.sql.SQLException;10.import java.sql.Statement;11.import java.text.SimpleDateFormat;12.import java.util.Arrays;13.import java.util.Date;14.import java.util.TimerTask;15.16.import oracle.sql.CLOB;17.18.import org.apache.lucene.analysis.standard.StandardAnalyzer;19.import org.apache.lucene.document.Document;20.import org.apache.lucene.document.Field;21.import org.apache.lucene.index.IndexWriter;22.23./** 24.* 建立索引的任务类 25.* @author wulihai 26.* @create 2009-06-02 27.*/ 28.public class LuceneDBIndexerTask extends TimerTask { 29.//缺省索引目录
30.private static String DEFAULT_INDEX_DIR=“C:IndexDB”;31.//临时索引目录的父目录
32.private File parentDir=null;33.//被搜索的索引文件
34.private static LuceneDBIndexerTask index=new LuceneDBIndexerTask();35.36.//构造方法
37.private LuceneDBIndexerTask(){ 38.String dirStr=Constant.INDEX_STORE_DIRECTORY;39.if(dirStr!=null&&!“".equals(dirStr)){ 40.this.parentDir=new File(dirStr);41.42.}else{ 43.this.parentDir=new File(DEFAULT_INDEX_DIR);44.} 45.46.if(!this.parentDir.exists()){ 47.this.parentDir.mkdir();48.} 49.} 50.51./** 52.* 单实例访问接口 53.* @return 54.*/ 55.public static LuceneDBIndexerTask getInstance(){ 56.return index;57.} 58.59./** 60.* 锁定目录以及文件 61.* 只允许单线程访问 62.* 63.*/ 64./*public synchronized void singleRunning(){ 65.if(flag==false){ 66.flag=true;67.run(parentDir);68.} 69.}*/ 70.71./** 72.* 为数据库字段建立索引 73.*/ 74.public void run(){ 75.System.out.println(”====LuceneDBIndexerTask$run()===============“);76.77.System.out.println(”~~~开始建立索引文件~~~~~~~~~~~~~~~“);78.Connection conn=null;79.Statement stmt=null;80.ResultSet rs=null;81.try { 82.Class.forName(Constant.DB_DRIVER_STRING);83.conn = DriverManager.getConnection(Constant.DB_URI_STRING, Constant.DB_USERNAME, Constant.DB_PWD);84.stmt = conn.createStatement();85.rs = stmt.executeQuery(Constant.DB_QUERY_STRING);
86.File file=new File(parentDir+File.separator+new SimpleDateFormat(”yyyyMMddHHmmss“).format(new Date())+File.separator);87.if(!file.exists()){ 88.file.mkdir();89.} 90.IndexWriter writer = new IndexWriter(file,new StandardAnalyzer(), true);91.long startTime = new Date().getTime();92.while(rs.next()){ 93.Document doc = new Document();94.doc.add(new Field(”ARTICLEID“, rs.getString(”ARTICLEID“), Field.Store.YES,Field.Index.TOKENIZED));95.doc.add(new Field(”TITLE“, rs.getString(”TITLE“), Field.Store.YES,Field.Index.TOKENIZED));96.doc.add(new Field(”USERNAME“, rs.getString(”USERNAME“), Field.Store.YES,Field.Index.TOKENIZED));97.doc.add(new Field(”USERID“, rs.getString(”USERID“), Field.Store.YES,Field.Index.TOKENIZED));98.//对日期建立索引
99.String createdate=new SimpleDateFormat(”yyyy-MM-dd“).format(rs.getTimestamp(”CREATEDATE“));100.doc.add(new Field(”CREATEDATE“, createdate, Field.Store.YES,Field.Index.TOKENIZED));101.//对大字段建立索引
102.BufferedReader in=null;103.String content=”“;104.CLOB clob =(CLOB)rs.getClob(”CONTENT“);105.if(clob!= null){ 106.//得到一个读入流
107.in=new BufferedReader(clob.getCharacterStream());108.StringWriter out=new StringWriter();109.int c;110.while((c=in.read())!=-1){ 111.out.write(c);112.} 113.content=out.toString();114.} 115.doc.add(new Field(”CONTENT“, content, Field.Store.YES, Field.Index.TOKENIZED));116.writer.addDocument(doc);117.} 118.writer.optimize();119.writer.close();120.121.//测试一下索引的时间
122.long endTime = new Date().getTime();123.System.out.println(”索引文件“+file.getPath()+”建立成功...“);124.System.out.println(”这花费了“ +(endTimestartTime)+ ” 毫秒!“);131.} else { 132.System.out.println(”0个结果!“);133.} 134.} 135.136.return results;137.138.} 139.140./** 141.* 确定搜索索引所在目录目录 142.*/ 143.private File getTargetDir(File dir){ 144.int length = dir.listFiles().length;145.File searchFile = null;146.147.// length=3的时候最多
148.// 同时搜索和同时建索引的时候会出现length=4 149.if(length >= 2){ 150.// 找到次最新建立的索引文件 151.String[] names = dir.list();152.Arrays.sort(names);153.searchFile = new File(dir + File.separator + names[length-2]);154.} 155.if(length == 1){ 156.File files[] = dir.listFiles();157.searchFile = files[0];158.} 159.if(length == 0){ 160.// 如果没有索引文件则,建立第一个索引
161.// TestDBIndexer.getInstance().isInstanceRunning();162.// search();163.} 164.165.return searchFile;166.} 167.// 168.// public static void main(String[] args)throws Exception { 169.// new LuceneDBQuery().search(”纳税人“);170.// } 171.172.}
配置文件管理类: Java代码
1.2.package com.liferay.portal.util;3.4.import java.io.IOException;5.6.import org.jdom.Document;7.import org.jdom.Element;8.import org.jdom.JDOMException;9.import org.jdom.input.SAXBuilder;10.11.public class LuceneDBQueryUtil { 12.13.public static String getIndexPath(){ 14.15.String filePath = ”zxt_index.xml“;16.String indexPath=”“;17.SAXBuilder builder = new SAXBuilder(false);18.try { 19.Document doc = builder.build(Thread.currentThread().getContextClassLoader().getResource(filePath));20.Element rootElement = doc.getRootElement();21.Element index=rootElement.getChild(”index“);22.indexPath=index.getText();23.System.out.println(indexPath);24.} catch(JDOMException e){ 25.e.printStackTrace();26.} catch(IOException e){ 27.e.printStackTrace();28.} 29.return indexPath;30.31.32.} 33.}
配置文件:zxt_index.xml Xml代码
1. 2.
3.
第二篇:基于lucene的信息检索系统 毕业论文
第三章 信息检索系统及其关键技术
3.1 信息检索系统简介
信息检索系统是利用信息检索技术(如全文检索等)帮助用户查找特定信息的一种工具。它能够对信息进行正确的表示、存储和组织,同时还提供对于信息的访问方式。在这里,信息的概念很宽泛,它可以是一篇文章,一段文本,一个网页,一封邮件,一张照片,甚至是一些虚拟信息的集合。
3.2 信息检索的过程
检索的整个过程包括:构建文本库,建立索引,进行检索。1.构建文本库
在开发检索功能前,一个信息检索系统需要做些准备工作。首先,必须构建一个文本数据库。这个文本数据库用来保存所有用户可能检索的信息。在这些信息的基础上,确定检索系统中的文本模型。文本模型是被系统所认可的一种信息格式,这种格式应当具有可识别、冗余度低等特点。当然,在系统的运作过程中,文本数据库的信息可能会不断地发生变化。
2.建立索引
有了文本模型后,就应该根据数据库内的文本建立索引。索引可以大大提高信息检索的速度。目前有多种索引的建立方式,采用哪种方式取决于信息检索系统的规模。大型信息检索系统(如百度、Google这样的搜索引擎)均采用倒排的方式来建立索引。
3.进行搜索
在为文本建立索引之后,就可以开始对其进行搜索。通常由用户提交一个检索请求,该请求被分析,然后在索引中检索并返回结果。
3.3 Lucene
Lucene是一个开源全文检索工具包,它是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。3.3.1 Lucene结构分析
Lucene作为一个优秀的全文检索引擎,其结构具有强烈的面向对象特征。首先是定义了一个与平台无关的索引文件格式,其次通过抽象将其核心组成部分设计为抽象类,具体的平台实现部分设计为抽象类的实现,此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象式的处理,最终达成了一个低耦合高效率,容易二次开发的检索引擎。Lucene的结构和源码组织结构如图3.1所示:
查询语句org.apache.lucene.queryPaser被索引文件查询结果org.apache.lucene.search对org.apache.lucene.analysis外接口org.apache.lucene.index核心索引org.apache.lucene.store索引文件org.apache.lucene.documentorg.apache.lucene.store基础结构封装 图3.1 Lucene结构和源码组织结构
从图中可以看出,Lucene由基础结构封装、索引核心、对外接口三大部分组成。其中直接操作索引文件的索引核心又是系统的重点。Lucene的将所有源码分为了7个模块(在java语言中以包即package来表示),各个模块所属的部分也如图3.1所示。3.3.2 Lucene索引的建立
索引是信息检索引擎工作的第一步,只有建立了索引才能进行信息检索。Lucene用Document逻辑文件和Field域来组织各种数据源。Document向Lucene提供原始的要索引的文本内容,Lucene从Document中取出相关的数据源,并根据属性配置进行相应的处理,建立索引。
索引过程如下:
(1)创建一个IndexWriter用来写索引文件,它有几个参数,INDEX_DIR就是索引文件所存放的位置,Analyzer便是用来对文档进行词法分析和语言处理的。(2)创建一个Document代表我们要索引的文档。
(3)将不同的Field加入到文档中。我们知道,一篇文档有多种信息,如题目,作者,修改时间,内容等,不同类型的信息用不同的Field来表示。(4)
IndexWriter调用函数addDocument将索引写到索引文件夹中。
3.3.3 Lucene的搜索
Lucene建立了功能强大的索引机制为搜索服务,这是因为在检索系统的使用中,用户体验最深的还是搜索部分。如果这一部分的性能无法达到用户要求,那么软件就没有太大的意义。
搜索过程如下:
(1)IndexReader将磁盘上的索引信息读入到内存,INDEX_DIR就是索引文件存放的位置。
(2)创建IndexSearcher准备进行搜索。
(3)创建Analyer用来对查询语句进行词法分析和语言处理。(4)创建QueryParser用来对查询语句进行语法分析。
(5)QueryParser调用parser进行语法分析,形成查询语法树,放到Query中。(6)
IndexSearcher调用search对查询语法树Query进行搜索,得到查询结果存放在TopScoreDocCollector。
3.3.4 中文分词
中文分词是处理中文信息的基础与关键。由于Lucene自带的分词器对英文的分词效果较好,但对中文的分词效果并不如意。为了使检索系统能更好的处理中文信息,本文采用了IKAnalyzer作为分词器。IK Analyzer是一个开源的,基于java 语言开发的轻量级的中文分词工具包。从2006年12月推出1.0 版开始,IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer 3.X 则发展为面向Java 的公用分词组件,独立于Lucene 项目,同时提供了对Lucene 的默认优化实现。IKAnalyzer的特性:
采用了特有的“正向迭代最细粒度切分算法“,具有60 万字/秒的高速处理能力。 采用了多子处理器分析模式,支持:英文字母(IP 地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。
优化的词典存储,更小的内存占用。支持用户词典扩展定义
针对Lucene 全文检索优化的查询分析器IKQueryParser;采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene 检索的命中率。
第四章 信息检索系统的分析与设计
4.1 系统功能需求
随着科技的发展,电脑的应用越来越普遍,人们的学习工作几乎都不能离开电脑。而笔记本电脑由于其轻便和时尚性,受到人们普遍的喜爱。但是,在购买笔记本时,我们需要详细地了解所买型号笔记本的外表及各种功能,为此我们往往要去各个商家挑选。为了方便,需要提供一个专门的笔记本电脑信息查询系统,能让用户轻松的获取各种型号笔记本的详细参数与外观。该系统提供一个良好的用户界面,用户查询时,系统能根据用户查询语句精确地给出查询信息,能够较好地理解用户的查询语句。
4.2 系统开发平台设计
本系统采用的是Eclipse6.5+MySQL5.1+Tomcat5.5的开发环境。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。在开发时搭配使用MyEclipse进行开发。MyEclipse企业级工作平台是对Eclipse IDE的扩展,利用它可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大地提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML CSS、Javascript、Struts、Spring、SQL、Hibernate和JSF。
MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置的软件中。本文采用的是当前的稳定版本5.1。
Tomcat是一个免费的、开放源码的、支持JSP和Servlet的web服务器。Tomcat是一个小型的轻量级应用服务器,在中、小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能。目前Tomcat5.5是较稳定的版本,而且Eclipse也很好的支持该版本的集成,所以本文采用Tomcat5.5进行开发。此外,本系统所应用到的其它开源工具为:Struts1.2、Spring2.5、Hibernate3.1,网络爬虫Heritrix1.14.3,网页解析工具HtmlParser2.0,全文检索工具包Lucene3.0,中文分词软件IKAnalyzer3.0。
4.3 系统的组成结构
整个系统由三个部分组成:网页采集分析模块、索引与数据库模块、web搜索界面模块。其中网页采集与分析分别由开源工具网络爬虫Heritrix和网页解析器HtmlParser完成;由Lucene完成索引系统,并将索引与数据库关联;web查询界面基于SSH框架设计完成。模块组成结构如图4.1所示。
网页抓取分析模块索引与数据库模块InternetHeritrixWeb检索模块抓取的信息网页Lucene建立索引HtmlParser文本格式信息返回查询结果创建数据库数据库索引根据索引查找数据库查询索引基于SSH设计
图4.1 系统模块结构图
4.4 网页抓取分析模块设计
4.4.1 站点选择
从技术角度看,选择网站的主要依据有:
(1)网站能够被Heritrix爬虫抓取。因为有的网站使用了反爬虫技术,防止未经授权的爬虫对面页进行抓取。
(2)网站的信息不是用javaScript动态生成的。这种动态生成的内容需要在浏览器中运行生成,是爬虫无法获取到的。
(3)网站的面页结构不应该经常变化,最好是使用一种模版动态生成的。这样有利于在分析面页时,使用较为简单的方式从网页中解析数据。
除了上述3点技术方面的因素,在选择网站时,也应当尽量选择那些访问量较大、产品信息比较齐全的网站。这样,有利于数据完整性。基于上述各因素的考虑,本文选择太平洋电脑网(http://$ 例如苹果Macbook Pro 15(MC373CH/A):
http://product.pconline.com.cn/notebook/apple/411413.html 产品详细参数面页URL的正则表达式为:
^http://product.pconline.com.cn/notebook/+[wd]+/d{5,6}_detail.html$ 例如苹果Macbook Pro 15(MC373CH/A)详细参数: http://product.pconline.com.cn/notebook/apple/411413_detail.html 产品页的产品图片URL都是以.jpg结尾。
通过对网站URL分析,可以总结出我们要抓取的面页URL的规律,只要抓取产品面页和产品详细信息面页及产品图片即可。因此,要扩展Heritrix来实现上述抓取策略。Heritrix有多个扩展点,本文选择扩展FrontierScheduler来抓取特定的内容。FrontierScheduler是Heritrix的一个PostProcessor,它的作用是将Extractor中分析得出的链接加入到Frontier中,以待继续处理。扩展代码如下:
protected void schedule(CandidateURI caURI){
//取得URI字符串
String url = caURI.toString();try{
//URI选择策略 //匹配 具体型号url Pattern pattern_model = Pattern.compile(MODEL_URL);Matcher matcher_model = pattern_model.matcher(url);//匹配 型号详细参数url
}
} Pattern pattern_detail = Pattern.compile(DETAIL_URL);Matcher matcher_detail = pattern_detail.matcher(url);//URL是产品面页/详细参数面页/jpg图片/DNS if(//matcher_detail.find()||matcher_model.find()||url.endsWith(“.jpg”)
} e.printStackTrace();||url.indexOf(“dns:”)!=-1){
getController().getFrontier().schedule(caURI);return;}else{ }catch(Exception e){ }finally{ 4.4.3 网页解析工具HtmlParser 对于抓取到的网页,需要经过解析,提取出需要的信息以便更好的建立索引和创建数据库。本文Html解析器是HtmlParser,HtmlParser是一个开源的Java库,它提供接口,支持线程和嵌套的解析Html文本。HtmlParser提供了两种访问Html结点的方法:Visitor模式和Filter模式,本文采用了Filter模式。Filter模式通过设置一定的过滤条件,对每个结点进行过滤,返回一个符合规则的节点列表。Org.htmlparser.filters包含所有已经实现的Filter类型,定义了16种Filter。
例如要解析一个网页中所有包含图片的链接,分析可得该节点中具有链接标签名”a”,并且它的字节点中还必须包含图片标签名”img”,则过滤器的定义为:
NodeFilter filter = new AndFilter(new TagNameFilter(“A”), New HasChildFilter(new TagNameFilter(“IMG”)))4.4.4 网页信息结构化
在抓取到笔记本产品各种信息的Html文本后,需要用HtmlParser对Html文本解析,得到建立索引所需的各种信息。处理后的的文件如图4.2所示。
图4.2 处理后产品的信息格式
从图中可以看出文件的格式如下:第一行是笔记本品牌(包括中文和英文名称);第二行是笔记本具体型号;最后一行则是该笔记本的对应图片文件名,图片名是经过Hash后的字符串;其余部分则是该笔记本的详细参数。将所有笔记本产品的信息按上述格式存储,以便建立索引。
4.5 数据库与索引设计
4.5.1 数据库设计
本文数据库结构简单,只有一个数据表来存储笔记本产品的各种信息,数据库各字段含义如表4.1所示。
表4.1 数据库字段含义
字段名 Id name type content abstractcontent
字段含义 主键
品牌名称,如”苹果”
型号,如” ibook G4 M9627CH/A” 笔记本产品的详细信息
详细参数的摘要,供建立索引时使用
创建数据库的SQL语句如下: create database searchdb;use searchdb;create table product(id
int AUTO_INCREMENT, name varchar(128), type varchar(128), content varchar(20000), abstractcontent varchar(512),);4.5.2 索引设计
在使用Lucene建立索引时,需要定义Lucene的Document格式。索引中的信息应当尽量少,只要能够满足用户检索要求就可以了。本文中,为Document构建了4个Field:
//当前产品在数据库中的id
Field indentifier = new Field(“id”,id + “",Field.Store.YES, Field.Index.NOT_ANALYZED);//产品的品牌
Field name = new Field(”name“,product.getName(),Field.Store.YES, Field.Index.ANALYZED);//产品型号
Field type = new Field(”type“,product.getType(),Field.Store.YES, Field.Index.ANALYZED);//将笔记本产品的name、type、abstractcontent信息综合起来,默认的检索域 Field all = new Field(”all“,text,Field.Store.YES, Field.Index.ANALYZED);上述4中Filed中,前3个与数据库的内容有直接的对应关系,而最后一个Filed则是将name、type这两个Filed拼接起来并添加了abstractcontent来进行保存,为用户提供一个检索时的默认Filed。这种方式占用了索引空间,但却避免了使用多域搜索带来的性能损失,还可提高检索的全面性。
4.6 web检索模块设计
web检索模块基于SSH设计实现,由Struts作为控制器,Spring作为业务层,Hibernate作为数据持久层,结构如图4.3所示。
控制器Struts业务层SpringSpringAOP持久层HibernateHibernateTemplaterequestActionServletActionFrom数据库responseJSPActionSpringIocHibernateDAO图4.3 基于SSH的web检索模块结构图
从图中可以看出,用户的请求会发送给ActionServlet,用户数据通过ActionForm Bean传递给Action,由Action类来通过Spring的IoC容器访问Hibernate的DAO,DAO负责数据库的交互,然后再返回JSP面页将查询结果进行显示。
第五章 信息检索系统的实现
5.1 网页抓取的实现
在抓取任务开始前,需要对抓取的内容进行详细地分析,确定种子,即开始抓取的网页。本文中为了能尽量获取全部的产品信息,直接将需要抓取的面页(包括产品面页、详细参数面页、图片)的URL作为抓取的种子,这就需要找出所有产品的具体URL。在太平洋电脑网上提供了站内搜索功能,当输入查询某品牌的笔记本就能得到站内所有该品牌标记本的信息的面页,当然面页中也包含这些笔记本的产品面页的URL,这就提供了抓取的种子。依次查询各个品牌的笔记本,将查询结果面页保存到本地,然后用HtmlParser解析得到其中产品面页的URl,写入种子文件。
图5.1 查询结果面页源代码
从网页源代码中可以发现解析网页时可以得到该品牌所有笔记本产品的产品面页和详细参数面页的URL。其中产品详细参数面页URL的节点形如:
第三篇:基于lucene的垂直搜索引擎的研究与设计论文
摘 要:随着互联网技术的不断发展,通用搜索引擎就需要采集的更多的信息和内容,但是面对巨大的搜索结果,用户要想准确找到他们所需要的信息,这样将会耗费很大的精力。因此,需要以数据的特定领域为重点,全面进行深入的研究,注重专业化的垂直搜索引擎就产生了,它能够准确、及时返回用户需要的信息。本文主要分析垂直搜索引擎的特点和结构,并分析了基于Lucene的垂直引擎的研究和设计,对提高互联网信息的搜索速度具效率具有重要的意义。
随着互联网的飞速发展,互联网信息迅猛增长,人们已经习惯从互联网上获取他们所需的信息。然而,一些通用搜索引擎无法及时准确地反馈给人们需要的信息,不能够做到有针对性的搜索一些信息,无法满足人们的基本需求。在进行搜索的过程中,想搜索一件物品,系统将会提供给你很多的搜索结果。但是,这些搜索引擎返回结果中有大量排在前面的信息可能不是我们需要的,这样就会让人感觉郁闷,得不到自己想要的信息。而且,60%的搜索引擎没有机会收录一些有价值的的信息,需要用户进行注册才能够得到一些更有价值的信息。基于lucene的垂直搜索引擎,能够及时、准确给用户反馈出他们需要的信息。垂直搜索引擎的概述
垂直搜索引擎能够在一些专业领域得到广泛的应用,为用户提供更加便捷的搜索服务。垂直搜索引擎能够在某一特定领域内启动一些网络爬虫,在进行网页下载的时候,能够找到和本地网页库中相关的信息,然后对这些信息进行处理,将一些数据转化为结构化数据,最后反馈给用户的搜索入口。垂直搜索能够有针对性进行搜索,能够根据用户的具体要求进行搜索和检测,为他们提供具有非常鲜明特色的搜索服务,这种搜索引擎一个非常突出的特点就是深入、详细。由于通用搜索引擎搜索的范围十分广泛,因此,它不能满足细致的搜索工作,不能够将准确的信息反馈给需要的特定人群[2]。根据市场需求的多样化,搜索引擎必须进行细分,给人们提供准确的搜索服务。垂直搜索引擎的特点和框架结构设计
2.1 垂直搜索的特点 垂直搜索引擎能够有针对性进行搜索,能够准确提供给人们需要的信息。通用的搜索引擎更加注重数据分离和关键词搜索,垂直搜索更多注重文本的分离,对数据信息进行处理,使得数据能够满足人们的需求,通用的搜索引擎就不需要考虑数据结构。由于相关信息垂直搜索引擎只需要捕捉到一些某个特定的行业,这样的信息采集方式的使用只需要爬虫找题相关信息,垂直搜索引擎具有以下特点。一是垂直搜索引擎的爬虫具有定制性,能够深入抓取特定行业的一些信息。二是垂直搜索引擎是针对行业的特点来进行抓取信息的,以网站的数据为例,各种人才网数据源的来源于求职的网站,从股票网站中搜索到相关的信息。三是垂直搜索引擎更倾向于抓住一些结构化数据和元数据,例如,在寻找一所房子的过程中,其能够捕捉到相关的地理位置、价格、小区环境、房地产价格等一些系统的信息[3]。
2.2 垂直搜索引擎的框架设计 垂直搜索引擎的建设需要做好以下几个方面的工作。一是网站分析。抓捕器需要设置所需的网站信息,并且还要结合特定的行业模板进行抓捕工作。二是站点初始化分析。一些网站需要用户登录以后才能够获得详细信息,因此,有必要在垂直搜索引擎中,设置这个注册和登录过程,这样才能够完善详细的信息。三是页面爬虫。网络爬虫主要负责抓取一些web数据。四是数据分析。分析有用的链接和数据,并且利用爬虫来提取这些新的数据。五是建立索引。将爬虫抓取到的信息进行整理和分析,将这些信息进行选择并存储在数据库中当中,并结合数据库来建立索引,以便能够快速获取信息。六是搜索查询。设计一个个性化的应用程序,或融合一些其他网站,能够搜索到其他网站的一些信息。基于Lucene的垂直引擎的设计
3.1 lucene全文搜索框架 Lucene是一个子项目,能够有效利用开放源代码来对全文的搜索,它能够给开发人员提供了大量的外部接口,这是一个易于使用的工具。在垂直搜索引擎的部件当中,建立基于Lucene的索引和查询,用户只需要按照该方法来进行操作,就能够实现对全文进行检索。因为Lucene是开源的,具有面向全体对象的特点,程序员还能够在此基础
第四篇:工作总结
工作总结
当我带着教育的理想以及对工作的热情投入到每天的忙碌和充实中去时,浑然未觉时间伴随着工作中的酸甜苦辣如水般迅速流逝。逝者如斯,总结过去,不为缅怀,只为能更快成长为一位有担当有能力的人民教师。
一年对于我们这些刚刚走入社会的学生来说都可以用意义非凡来概括。在这一年中,我们的生活和工作都发生了重大的改变。人生最快乐是事就是做自己喜欢做的事。我很庆幸能走上向往已久的三尺讲台。我理想要用我的知识,我的理念去教育一批有理想、有担当、敢作敢为的时代精英,要成为学生们永生难忘的良师益友。
回想曾经的我是多么自信,相信凭借自己的活力、直率与热情,我能够走进孩子们的心;也相信人定胜天,世上没有坏孩子,只有被老师遗忘的孩子。相信凭自己的一己之力,我能培养出一批有理想、有担当、敢作敢为的时代精英。自己对教师这一职业有一个清醒的认识:教师,任重而道远;成为学生的良师益友,难上加难;作为老师,只有爱是不行的。认识到自己肩上的责任,了解到以后道路的艰难,并没有挫伤我的积极性,而是让我在有心理准备的情况下更多了许多干劲。找到理想与现实的切合点,快速完成从学生到教师这一社会职责的转变。
如今,一年的见习期即将结束,总结我这一年内完成了如下的学习和工作任务:
一、思想上,自觉加强理论学习,努力提高政治思想素质。
首先,我主动加强政治学习,除了经常看电视、看报纸、关心时事政治外,我还认真学习了马列主义,毛泽东思想,邓小平理论,“三个代表”重要思想,自觉树立高尚的世界观、人生观,树立社会社会主义荣辱观,用先进的思想武装自己;其次理论学习还要在行动上落实,注重其对实践的指导意义,自觉地践行“八荣八耻”,时刻用其来约束自身行为,改正不良习惯,继续发扬优秀传统。另外,除了干好自己的本职工作外,还积极参加各项活动,对于公司组织的活动,能够积极参加与配合,在生活上乐于助人,关心集体荣誉。通过以上努力,我感到自己的政治素质有了长足进步。
二、教育教学方面:
要提高教学质量,关键是上好课。为了上好课,我做了下面的工作:
1、课前准备:备好课。一学期下来,翻开密密麻麻的两本备课本,我的心里是自豪而满足。
2、认真钻研教材,对教材的基本思想,基本概念,每句话,每个单词都弄清楚,了解教材的结构,重点与难点,掌握知识的逻辑,能运用自如,知道应补充哪些资料,怎样才能教好。
3、了解学生原有的知识技能的质量,他们的兴趣,需要,方法,习惯,学习新知识可能会有哪些困难,采取相应的预防措施。
4、考虑教法,解决如何把已掌握的教材传授给学生,包括如何组织教材,如何安排每节课的活动。
5、课堂上的情况:组织好课堂教学,关注全体学生,注意信息反馈,调动学生的有意注意,使其保持相对稳定性。同时,激发学生的情感,使他们产生愉悦的心境,创造良好的课堂气氛。课堂语言简洁明了,尽可能多地使用英语进行教学。课堂提问面向全体学生,注意引发学生学英语的兴趣。课堂上讲练结合,布置好家庭作业,作业少而精,减轻学生的负担。
6、要提高教学质量,还要做好课后辅导工作,从赞美着手,所有的人都渴望得到别人的理解和尊重。所以,和差生交谈时,对他的处境,想法表示深刻的理解和尊重。还有在批评学生之前,先谈谈自己工作的不足。
7、积极参与听课,评课,虚心向同行学习教学方法。博采众长,提高教学水平。坚持听课,注意学习组里老师的教学经验,努力探索适合自己的教学模式。本年我参加了很多关于教学改革、研讨的培训课学到了很多东西,增长了很多见识,更学到了很多与别的老师一起交流、一起探讨教学上存在的一些问题,对自己的教学促进很大。
8、热爱学生,平等的对待每一个学生,让他们都感受到老师的关心。良好的师生关系促进了学生的学习。
如今,一年即将过去,总体上来说,我感觉从大学校园走进高中校园,不仅仅是环境的变化,更多的是角色的变化,从一个被教育者变成了教育工作者。在这样一个变化的过程中有苦有甜,但是我知道所有的付出一定会有回报的。这一年的结束也将是今后工作的另一个开始,总结得失,再接再厉,用更大的热情投入到以后工作中去。
第五篇:工作总结
华西镇创先争优活动工作汇报
发布时间:2011-01-05 来源:华阴市
华西镇地处华阴市西北部,辖14个村,1个居委会,总人口2.3万余人。镇域面积173平方公里,耕地面积35756万余亩,群众可耕种面积10余万亩。党委下辖15个党支部482名党员,其中农村支部14个,共有党员441名。自6月份开展创先争优活动以来,我镇充分借鉴在深入学习实践科学发展观活动中取得的成功经验,精心设计载体、丰富活动内容,采取有力措施,在全镇基层党组织和党员中广泛开展了以“立足服务惠民创先争优,依托产业富民升级晋档”为主题的创先争优活动,力争实现“党委争创省级先进,支部争当渭南百强”的奋斗目标。目前,各项工作正在扎实有序的逐步推进。现将活动开展情况汇报如下:
一、精心设置载体,切实宣传动员
按照创建内容及要求,制定出以“立足服务惠民创先争优,依托产业富民升级晋档”为主题,以大力实施党建先锋“三示范”工程为活动载体的活动方案,力求在机关党员中实现 “五个创先争优”,即在服务大局、科学发展上创先争优;在务实创新、创造业绩上创先争优;在坚持学习、提高素质上创先争优;在改进作风、为民服务上创先争优;在从严要求、提升形象上创先争优。在农村党员中实现“五个创先争优”,即在发展产业带头致富上创先争优;在帮扶群众带领致富上创先争优;在整治环境文明创建上创先争优;在遵纪守法维护稳定上创先争优;在移风易俗尊老爱幼上创先争优。通过明确创争目标,落实工作责任,激发工作活力,推动此项活动全面发展。同时,制定大型宣传牌3个、挂牌标语30个、路碑标语50个,设置镇村党组织公开承诺栏16个,在全镇上下形成了人人了解活动、人人参与活动的良好社会氛围。
二、突出实践特色,深化活动效果
1、围绕岗位职责,广泛开展承诺。坚持承诺内容与产业发展相结合、与扶贫帮困相结合、与促进和谐相结合的“三结合”原则,指导支部、党员根据自身职能和特点,确定承诺内容,订立完成时限,并通过公开栏向社会公开,接受群众监督。
2、实施示范工程,引领产业发展。按照“借鉴外地经验、整合本地资源、政府支持引导、优惠政策倾斜、能人示范带动、群众自愿参与、信息技术服务、专业合作推进”的产业发展思路,深入开展 “党委示范抓产业、支部示范抓基地、党员示范抓特色”党建先锋工程。坚持把党支部建设成为推动产业发展的组织者、推动者,把党员干部锻造成为农民致富的带头人、帮扶人。现已形成1万亩高效玉米示范基地,2万亩小麦良种繁育示范基地,1万亩大棚西瓜示范基地,1万亩红提葡萄示范基地,5千亩优质莲菜示范基地,3千亩大棚果蔬示范基地,2千亩无病毒草莓示范基地。七大产业基地支撑向国家级现代农业示范园区迈进!广大农村党员积极响应党委号召,学科技,用科技,在特色养殖、特色种植方面做出了积极有益的探索。全镇已涌现出党员致富带头标兵14人,有296名党员掌握了2-3项农业实用技术,发展了1项特色产业。在此推动下,全镇人均纯收入预计到年底将突破7000元。
3、强化组织建设,推进升级晋档。根据村级组织“升级晋档、科学发展”要求,选派了7名科级领导干部兼任后进村党支部第一书记,17名干部驻村开展工作。通过指导工作强化监督、掌握民情调处矛盾、发展产业增加收入等工作措施,推动后进村工作上台阶。现我镇14个村中,创建一类村3个,二类村7个,三类村4个。我镇被评为渭南市农村党组织“升级晋档、科学发展”活动“十佳乡镇”,演家、冯东村荣获 “百强村”称号。冯东村还被授予“全省升级晋档、科学发展进步奖”。
4、依托创先争优,实现和谐发展。一是完善服务机制。印制了4000余份便民服务卡下发到每户群众手中,群众在家打个电话,就可以进行政策咨询和相关事项办理。二是改进工作方法。确立了季度村级工作观摩评比制度,通过对环卫整治、产业发展、新农村建设等工作的检查评比,激励村干部谋大事、干实事、勤作为。三是开展村容整治。各支部细化了无职党员职责,采取党员包路段、包巷道等方式,定期清理“三堆”,净化“三口”,使各村村容村貌常年保持洁净。四是突出和谐稳定。通过摸底排查,继续对前期排查出的93户增收无思路、创业无资金、种养无技术的困难群众,采取“一户一策一干部(党员)”的形式进行结对帮扶,使这部分群众的人均收入大幅提升。村民监督委员会工作有序,监督有力,全年杜绝不合理开支12万元,提合理化建议54条,确保了华西社会的和谐稳定,连续三年实现了零上访。五是推进整体工作。全年争取项目资金1693.9万元。华西小城镇基础设施建设稳步推进,城镇功能日益提升,农产品集散市场成熟壮大;完成两个村的巷道硬化工程,使全镇巷道硬化率达到98%;实施4个村的安全饮水工程,使自来水入户率达到100%。实施土地整理项目8000亩,使全镇所有耕地实现了井、渠、路、电高标准配套;高起点、高标准实施群众文化活动广场、村级组织活动阵地等改扩建工程,现已打造出演家、冯东等7个新农村示范村,使我镇50%的村成为了管理有制度、产业有特色、增收有保障、基础有提高、环境有改善的“五有”新农村示范村。
5、树立先进典型,拓宽活动范围。在建国61周年来临之际,对前期工作进行了总结回顾和表彰奖励,对后期工作进行了再动员再部署。通过支部申报、党委测评、公开公示等程序,评定创先争优先进支部4个,创先争优优秀干部5人,创先争优先锋党员10人,为全镇树立了比学赶超的先进标杆。与此同时,我镇还评选出平安家庭 96户,尊老爱幼模范85人,产业致富带头人70名。从而把创先争优与各类创建活动结合起来,相辅相成,共同推进。
6、学习全会精神,加快科学发展。一是党委中心学习组召开专题学习会,并对全镇如何贯彻落实十七届五中全会精神进行了安排和部署。机关干部在机关学习日上进行学习,并安排议题进行专题讨论;二是组织党员干部深入村组,宣讲十七届五中全会精神,并通过开展解民忧、兴产业、促增收等系列活动实践好十七届五中全会精神。三是指导各村充分利用广播、黑板报、宣传栏等宣传载体,全面宣传十七届五中全会精神,使广大群众了解全会的主要内容和精神实质。
三、下步工作安排
创先争优升级晋档活动将在近一年的时间内处于全面推进阶段。我镇将继续抓好以下几项工作:一是将活动与完成当前中心工作结合起来,突出争创亮点,实现共同进步;二是将活动与学习型党组织建设结合起来,采取多种形式,提升党员素质;三是将活动与推进产业发展帮助群众增收紧密结合起来,努力实现“万元田突破一万亩,纯收入突破一万元”的双万目标和新农村示范村达到80%、升级晋档一类村达到80%的争创目标;四是将活动与目标管理结合起来,加强督导检查,确保整体推进。
![下载lucene工作总结(合集)word格式文档](http://static.xiexiebang.com/skin/default/images/icon_word.png)
![](http://static.xiexiebang.com/skin/default/images/icon_download.png)
文档为doc格式
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。
2015——2016学年度工作总结
2015——2016学年度工作总结 新圩小学 2015-2016学年度的教育教学工作即将结束,本学年,我校在上级的领导、关心和支持下, "以人为本,以育人为目标,有追求但不脱离实际,力求......
工作总结
劳动竞赛收获 回顾2017年12月举行的劳动竞赛,我收获颇丰,在工作中,我得到了成长和锻炼,同时也明白了好的成绩是建立在团结、努力、奋斗的基础上的, 要想做好催收工作,光有毅力和恒......
工作总结
霸州经济技术开发区泰山路绿化 提升改造工程 施工单位:廊坊华春园林绿化工程有限公司 编写日期: 工作总结 2010年11月22日 一、工程概况 霸州经济技术开发区泰山路绿化提升改......
年度工作总结
中国工商银行普陀山支行年度工作总结 2011年,在普陀山管委会的关心、支持下,在市分行的领导下,全体单位员工围绕既定工作计划,密切配合、积极参与,实现共同利益为宗旨,适应银行业......
年终工作总结
年终工作总结 1、个人简历 宋宝友,男,1984年4月30日生人,胶州市九龙镇人。 2004年毕业于胶州市职业学院,2006年到贵公司参加工作 本人性格温和、乐观、稳重,遇事冷静,待人诚实。有......
工作总结
建筑公司2010年工作总结 今年是我公司面临生存考验最严峻的一年,由于省公司大量缩减基本建设,也影响到我公司活源的锐减。也是历年来活源最少、开工最晚、工程管理费提取最低......
工作总结汇总
※※※※部2013年工作总结集团领导、分公司领导及诸位同事,大家好:2013年是我们※※※※公司业务快速、健康、和谐发展的一年。我部在集团领导的正确领导和支持下,按照年初集团......
工作总结
工作总结 我公司根据委托监理合同规定的监理范围和控制目标,并结合考虑监理人员的年龄层次、专业水平等条件,由公司副经理亲自带队,组建了一支精干的监理队伍进驻现场开展监理......