摘要:HttpConnectionManager.javapackagespider;importjava.io.BufferedReader;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.util.ArrayList;importjava.util.Collection;importjava.util.Date;importjava.util.zip.GZIPInputStream;i
阅读全文
随笔分类 - lucene.net&solr
摘要:转载http://blog.csdn.net/wzb56/article/details/7914954#1.构建词典内存树的TrieNode节点类: packagecn.wzb.segmenter.mm.bean;importjava.util.HashMap;/***构建内存词典的Trie树结点**/publicclassTrieNode{/**结点关键字,其值为中文词中的一个字*/publiccharkey='\0';/**如果该字在词语的末尾,则bound=true*/publicbooleanbound=false;/**指向下一个结点的指针结构,用来存放当前字在词中
阅读全文
摘要:Faceted search has become a critical feature for enhancing findability and the user search experience for all types of search applications. In this article, Solr creator Yonik Seeley gives an introduction to faceted search with Solr.By Yonik SeeleyWhat is Faceted Search?Faceted search is the dynamic
阅读全文
摘要:转载http://flym.iteye.com/blog/723430前缀时间在使用Jackrabbit作非结构化内容的存取,当问到当存取一个word文档时,jackrabbit能不能对word文档里面的内容作全文检索呢。回去查了一下相关的文档,是可以的,而且用的是一个叫Tika的工具。 Tika原先是一个Lucene的子项目,即对内容作元数据抽取用。更多的时候,是对一个平时所用的文档类数据作信息的进一步读取,这些信息是隐藏在文档本身的。这就要求有一个统一的工具来做这些事情,而Tika就提供了一个统一的调用接口来完成这些工作。 Tika通过一个parser和一个contentHandler来进
阅读全文
摘要:Tika是一个内容抽取的工具集合(a toolkit for text extracting)。它集成了POI,Pdfbox并且为文本抽取工作提供了一个统一的界面。其次,Tika也提供了便利的扩展API,用来丰富其对第三方文件格式的支持。在当前的0.2-SNAPSHOT版本中, Tika提供了对如下文件格式的支持:PDF - 通过PdfboxMS-* - 通过POIHTML - 使用nekohtml将不规范的html整理成为xhtmlOpenOffice 格式 - Tika提供Archive - zip, tar, gzip, bzip等RTF - Tika提供Java class - Cla
阅读全文
摘要:上部分的代码还可以进一步优化,主要是构建Collection<SolrInputDocument>集合,分批次提交,优化新增索引速度其实分页方式也是分批次提交的,不过这种方式 更优雅参考如下代码importjava.io.IOException;importjava.net.MalformedURLException;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;importjava.sql.SQLException;importjava.sql.Types;importjava.util.ArrayList;i
阅读全文
摘要:我写这系列solr数据导入源码分析主要是解决我们在编程方式导入数据库数据的时候,怎么解决大数据集导入索引的内存溢出问题的如果数据表的数据不大,用常规方法不会产生内存溢出的问题,当数据表数据上千万级的时候,可参考solr自带的数据导入方式我刚开始用编程方式添加solr索引的时候,很容易产生内存溢出问题,所以我就想考究solr自带的数据导入是怎么处理大数据集索引添加的;网上一些参考的方法通常是采取类似数据分页的方式,个人感觉比较拙劣,并且在针对不同数据库的时候,采取类似数据分页方式还要考虑不同数据库分页方式的差异(数据库方言),而且容易出现性能等问题。我的处理方式如下DatabaseResourc
阅读全文
摘要:上文solr dataimport源码主要实现的是数据读取功能下面我们接着看数据连接的实现的源码:privateConnectiongetConnection()throwsException{longcurrTime=System.currentTimeMillis();if(currTime-connLastUsed>CONN_TIME_OUT){synchronized(this){ConnectiontmpConn=factory.call();closeConnection();connLastUsed=System.currentTimeMillis();returnconn
阅读全文
摘要:数据读取类 JdbcDataSource.javaResultSetIterator是JdbcDataSource的内部类,用于从数据库读取数据privateclassResultSetIterator{ResultSetresultSet;Statementstmt=null;List<String>colNames;Iterator<Map<String,Object>>rSetIterator;publicResultSetIterator(Stringquery){try{Connectionc=getConnection();stmt=c.crea
阅读全文
摘要:在solr dataimport 数据导入源码分析(五)提到了contextimpl类调用DataImporter对象获取数据源contextimpl.javaprivateDataSourceds;privateDataImporterdataImporter;@OverridepublicDataSourcegetDataSource(){if(ds!=null)returnds;if(entity==null)returnnull;if(entity.dataSrc==null){entity.dataSrc=dataImporter.getDataSourceInstance(enti
阅读全文
摘要:DocBuilder类的简要代码如下,通过传入context参数到EntityProcessorWrapper类的构造函数,然后执行EntityProcessorWrapper的init()方法初始化数据源;然后调用EntityProcessorWrapper的相关方法获取数据(全部导入或增量导入数据)publicclassDocBuilder{privatevoiddoFullDump(){buildDocument(getVariableResolver(),null,null,root,true,null);}privatevoiddoDelta(){Set<Map<Stri
阅读全文
摘要:我们注意到EntityProcessorWrapper的初始化方法@Overridepublicvoidinit(Contextcontext){delegate.init(context); }这里context是上下文对象,通过context获取数据源,context是抽象类publicabstractclassContext{publicabstractDataSourcegetDataSource();publicabstractDataSourcegetDataSource(Stringname);publicabstractEntityProcessorgetEntityProce
阅读全文
摘要:我们查看DocBuilder类的源码发现,并不是直接持有对SqlEntityProcessor类的引用,而是另外一个包装类EntityProcessorWrapper,EntityProcessorWrapper直接继承自抽象类EntityProcessor,而不是继承自中间的EntityProcessorBase类,简要类图如下包装类额外添加了缓存处理以及格式转换等功能,然后调用SqlEntityProcessor相应方法进行处理,相当于SqlEntityProcessor的代理类,共同继承自抽象类EntityProcessor(SqlEntityProcessor 是通过EntityPro
阅读全文
摘要:在介绍DocBuilder类之前,我们先来解读数据导入对应实体处理器EntityProcessor,默认的实体处理器为SqlEntityProcessorEntityProcessor为抽象类,具体方法由子类实现packageorg.apache.solr.handler.dataimport;importjava.util.Map;publicabstractclassEntityProcessor{publicabstractvoidinit(Contextcontext);publicabstractMap<String,Object>nextRow();publicabst
阅读全文
摘要:上文说由DataImporter类进一步处理,DataImporter类的简要代码如下/************************************************************************Module:DataImporter.java*Author:Administrator*Purpose:DefinestheClassDataImporter***********************************************************************/importjava.util.*;/**@pdOid6bcd
阅读全文
摘要:solr处理请求的接口为SolrRequestHandler.java,由handleRequest方法处理来自http的请求/************************************************************************Module:SolrRequestHandler.java*Author:Administrator*Purpose:DefinestheInterfaceSolrRequestHandler*******************************************************************
阅读全文
摘要:一、下载试用下载apache-solr-3.4.0.ziphttp://lucene.apache.org/solr/解压到本地硬盘,切换到example目录下,这里我们使用solr自带的容器运行部署,执行java -jar start.jar访问:http://localhost:8983/solr/admin/正常说明solr已经成功启动。二、集成mysql1、创建表SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `documents`-- --------------------
阅读全文
摘要:转载:http://mxsfengg.iteye.com/blog/315330CommonsHttpSolrServer CommonsHttpSolrServer 使用HTTPClient 和solr服务器进行通信。Java代码 Stringurl="http://localhost:8983/solr"; SolrServerserver=newCommonsHttpSolrServer(url); CommonsHttpSolrServer 是线程安全的,建议重复使用CommonsHttpSolrServer 实例。Setting XMLResponseParser
阅读全文
摘要:Lucene是一种功能强大且被广泛使用的搜索引擎,以下列出了8种基于Lucene的搜索引擎,你可以想象它们有多么强大。1. Apache SolrSolr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。2. Elastic SearchElasticSearch是一个基于Luc
阅读全文
摘要:做搜索产品的时候发现国外一个同类型的产品contellio,发现功能比较强大,先记录下来貌似可以添加文档 网站 以及数据库等不同类型的数据源http://wiki.constellio.com/index.php/Main_Pagehttp://www.constellio.com/http://www.constellio.comhttp://wiki.constellio.com/index.php/Getting_Startedhttp://wiki.constellio.com/index.php/Search_Guidehttp://wiki.constellio.com/index
阅读全文