摘要: 大多数的应用程序将数据存储在关系数据库、xml文件中。对这样的数据进行搜索是很常见的应用。所谓的DataImportHandler提供一种可配置的方式向solr导入数据,可以一次全部导入,也可以增量导入。 概览 目标 能够读取关系数据库中的数据。通过可配置的方式,能够将数据库中多列、多表的数据生成solr文档能够通过solr文档更新solr 提供 通过配置文件就能够导入所有数据的能力 能够发现并处理 由insert、update带来的变化(我们假定在表中有一个叫做“last-modified的列”)能够配置 “完全导入”和“增量导入”的时间 让读取xml文件,并建立索引成为可配置。 能够将.. 阅读全文
posted @ 2009-09-16 12:36 searchDM 阅读(531) 评论(0) 推荐(0) 编辑
摘要: 使用Java程序从数据库中查询大量的数据时出现异常:java.lang.OutOfMemoryError: Java heap space 在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。 JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置. JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。例如:java -jar -Xmn16m -Xms64m -Xmx128m M 阅读全文
posted @ 2009-09-16 12:31 searchDM 阅读(858) 评论(0) 推荐(0) 编辑
摘要: 启动hadoop,但ssh 端口不是默认的22怎么样?好在它可以配置。在conf/hadoop-env.sh里改下。如: exportHADOOP_SSH_OPTS="-p1234" 阅读全文
posted @ 2009-09-16 12:29 searchDM 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 在 Eclipse 环境下进行开发和调试 http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop2/index.html IBM Hadoop Eclipse Plugin http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop2/mapreduce_plugin.zip 它可以把本地代码在hadoop上运行. 右击main类, 点"Run on hadoop", 它会把类打包成jar上传到服务器, 然后运行. 但有个缺点:main 的输入参数 阅读全文
posted @ 2009-09-16 12:29 searchDM 阅读(604) 评论(0) 推荐(0) 编辑
摘要: infoQ.com的:分布式计算开源框架Hadoop入门实践,作者:岑文初 分布式计算开源框架Hadoop介绍Hadoop中的集群配置和使用技巧Hadoop基本流程与应用开发 ibm.com的:用 Hadoop 进行分布式并行编程 基本概念与安装部署程序实例与分析部署到分布式环境 Hadoop的0.17版本中文文档:http://www.hadoop.org.cn/document/cn/r0.17.0/ 其它: Hadoop分布式文件系统:架构和设计要点 http://www.hadoop.org.cn/ 官网:http://hadoop.apache.org/ 官方wiki:h... 阅读全文
posted @ 2009-09-16 12:28 searchDM 阅读(493) 评论(0) 推荐(0) 编辑
摘要: mmseg4j 第一个版本就可以方便地与 solr 集成,在 google code 上面有简单的说明,第一版的发布博客也有简单的使用说明:中文分词 mmseg4j。为了更清楚说明在 solr 中使用 mmseg4j 中文分词,还是写篇博客吧。 目前有两个版本的 mmseg4j,1.7 版比较耗内存(一个词库目录就要 50M 左右),所以在默认jvm内存大小会抛出 OutOfMemoryErroy。我这里示例两个词库目录,所以不用目前最新版 1.7.2。而用 1.6.2 版。下载:mmseg4j-1.6.2 和 词库,或就下载一个源码包(包括了词库,从源码构建请看:中文分词 mmseg4j 1 阅读全文
posted @ 2009-09-16 12:27 searchDM 阅读(799) 评论(0) 推荐(0) 编辑
摘要: mmseg4j 发布也有一段时间了,前些日子忙着发布新的版本,修正 bug 之类的。使用示例一直拖到现在,其实 svn 上的 test 有使用 lucene 例子。如果你了解 lucene ,就不用例子也可以很方便与它集成。 mmseg4j 有几个 analyzer:SimpleAnalyzer、ComplexAnalyzer、MaxWordAnalyzer、MMSegAnalyzer。前面 三个都是继承 MMSegAnalyzer,MMSegAnalyzer 默认使用 max-word 方式分词。这些 analyzer 都有无参数的构造函数,还有一个带词库目录为参数的构造函数。怎... 阅读全文
posted @ 2009-09-16 12:24 searchDM 阅读(1136) 评论(0) 推荐(0) 编辑
摘要: Solr Distributed Searching (分布式搜索)是 solr 1.3 的特性。大索引,可能有多种原因要把它分成N个小的索引,可以把小索引放到其它的机器上,但是我没这么多机器怎么办呢?solr 1.3 有 multicore,恩,multicore 简单使用可以看我那一篇文章。各个 core 各不干扰,可以独立做索引(做索引时,可以分散到各个core上)。 现来看下 Distributed Searching 的效果,打开:http://localhost:8080/solr-cores/core0/select/?q=*%3A*&version=2.2&st 阅读全文
posted @ 2009-09-16 12:22 searchDM 阅读(824) 评论(0) 推荐(0) 编辑
摘要: Solr Multicore 是 solr 1.3 的新特性。其目的一个solr实例,可以有多个搜索应用。下面来小试一下。 官方发布的示例。在solr1.3/example/multicore目录(可以认为是multi.home)下,有一个 solr.xml(这只是默认文件,当然也可以指定别的文件),如: <?xmlversion="1.0"encoding="UTF-8"?><solrpersistent="false"><coresadminPath="/admin/cores"& 阅读全文
posted @ 2009-09-16 12:21 searchDM 阅读(1204) 评论(2) 推荐(0) 编辑
摘要: 如果想让 solr 有更加强大的功能或在查询时做一些特别的处理。可以在 solrconfig.xml 里注册自定义的 QueryParser(查询解析器),这是 solr 1.3 的新功能(插件功能),如: <queryParsername="mylucene"class="org.apache.solr.search.MyQParserPlugin"/><queryParser name="mylucene" class="org.apache.solr.search.MyQParserPlugin&qu 阅读全文
posted @ 2009-09-16 12:20 searchDM 阅读(546) 评论(0) 推荐(0) 编辑
摘要: solr 1.3 发布的时候,lucene 2.4还没有正式发布,其的 lucene 是开发版,现在lucene 2.4早已发布,那就换上新的 lucene 吧。 下载 solr 1.3 http://labs.xiaonei.com/apache-mirror/lucene/solr/1.3.0/apache-solr-1.3.0.zip和 lucene 2.4 http://labs.xiaonei.com/apache-mirror/lucene/java/lucene-2.4.0.zip到目录如e:/search/, 把 e:/search/apache-solr-1.3/... 阅读全文
posted @ 2009-09-16 12:19 searchDM 阅读(257) 评论(0) 推荐(0) 编辑
摘要: solr 1.3 增加了两种格式的输出,现在对各种输出给个测试报告。有 xml、json、php、phps输出作个对比,对相同相同查询各请求1W次,下面测试结果: solr-writer-test 点击放大 上面的结果表明,json是最快的(吞吐量最大),而且数据量最小(K速最小),php、php、xml差不多,但,php与phps快一点点,但数据量大了一些。 得出的结论: 吞吐量:json > php > phps > xml 数据量:json < xml < phps < php 如果不知道报表中的列代表的含义可以看 Jmeter测试报表相关参数说明 还 阅读全文
posted @ 2009-09-16 12:18 searchDM 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 经过几天的开发与调试,mmseg4j 1.6 版可以发布了。1.6 版主要实现与下功能: 实现多分词,在complex基础上,把长的词(大于2)拆出多个词。按二元分词,且把不存在的词去了,如:“西伯利亚” -> "西|伯利|利亚","西伯" 不存在词库中;“中国人民银行”-> "中国|国人|人民|银行"支持多个词库文件,在词库目录中放"words"前缀且".dic"后缀的文件。如:data/words-my.dic单字的单位独立一个文件(data/units.dic, 已经放入jar 阅读全文
posted @ 2009-09-16 12:18 searchDM 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 昨日做索引的程序重构下,测试 optimize 索引(在原有数据基础上提交索引)时,在开发的机器(windows)里总是会有两段索引,要再 optimize 才只是一个索引段,当然不是设置 maxSegments=2。反复运行还是如此,为了说明是否写的程序有问题,就用 solr 自带的 post.sh (或 post.jar)提交 optimize。结果还是有两段,再提交一次optimize 才是一个段。这问题…… 旧的程序运行得很正常,看了下它也没有提交两次优化。然后把新的程序也放到服务器(linux)上运行,结果是只有一个段。 恩,可以认为是与文件系统有关,optimize 的时候是先新生 阅读全文
posted @ 2009-09-16 12:17 searchDM 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 昨天再一次看 lucene 2.4 的新特性的时候,发现有一个TimeLimitedCollector东西,看类名也就知其什么功能了。 目前用的solr都没有设置超时,所以压力比较大的时候查询会越来越慢,也就越积越多,最终可能让 solr 挂了。总是想要个 timeout 功能,可能会对解决此问题有一定帮助。之前看lucene 2.4新特性时,没太注意。昨日注意到了,就要试一下。 solr 1.3 用的是 lucene 2.4 dev 版,还要看下 solr 有没有使用这特性。搜索源码发现 solr 1.3 有使用这个新特性。太好了,不用 hack了。 慢慢发现,solr 1.3 有这样的请求 阅读全文
posted @ 2009-09-16 12:16 searchDM 阅读(920) 评论(0) 推荐(0) 编辑
摘要: 默认 solr 优化索引的时候,只一个段,比起 N段(N不是很大)来说,可能有点耗时。索引为N段也不会一个文件太大。 可以有两种方式: url: curl"http://localhost:8080/solr/update?maxSegments=2&optimize=true"curl "http://localhost:8080/solr/update?maxSegments=2&optimize=true" xml: curlhttp://localhost:8080/solr/update--data-binary"&l 阅读全文
posted @ 2009-09-16 12:16 searchDM 阅读(346) 评论(0) 推荐(0) 编辑
摘要: spellcheck 可以实现输入“错误”提示,如:输入“周杰仑”搜索时,提示:您是不是要找“周杰伦”。Lucene 有这样的功能。用 n-gram 方法和 Levenshtein distance (编辑距离,算相似度)算法实现。 原理大概:用正确的词条,以 n-gram 方法去折分,并建立索引(官方叫:dictionary index),在查询时,去查dictionary index,可以返回正确词条,于是这些词条就是“提示”。 solr 1.2 也有此功能。solr 1.3 用组件的方式实现此功能。我现用 solr 1.3 来试下。默认有spellcheck组件了(使已经配置... 阅读全文
posted @ 2009-09-16 12:15 searchDM 阅读(708) 评论(2) 推荐(0) 编辑
摘要: 昨天在用 solrj 在 solr 的子机上做索引,报错: The@DeprecatedSolrUpdateServletdoesnotacceptqueryparameters:/update?wt=javabin&amp;version=2.2Ifyouareusingsolrj,makesuretoregisterarequesthandlerto/updateratherthenusethisservlet.Add:<requestHandlername="/update"class="solr.XmlUpdateRequestHandler 阅读全文
posted @ 2009-09-16 12:14 searchDM 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 有个频繁做索引的应用,它同时也对外提供搜索服务。大部分是 solr 1.3 的默认配置。solr 做索引,有时候报: 2009-7-13 9:48:06 org.apache.solr.common.SolrException log严重: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: SingleInstanceLock: write.lock at org.apache.lucene.store.Lock.obtain(Lock.java:85) ... 阅读全文
posted @ 2009-09-16 12:13 searchDM 阅读(950) 评论(0) 推荐(0) 编辑
摘要: Solr 1.4 版(未发布)开始有 SolrReplication 的东西,它是分布式复制组件。在 Solr 1.4 以下的版本完全靠 solr.home/bin 目录下的脚本来完成子机从主机复制索引文件。造成了平台有关了(只能在 unix 类操作系统下使用)。windows 平台下基本没戏(排除自己写复制的细节)。Solr 1.4 引进 SolrReplication 非常不错,这样 windows 平台下有福了,同时还提供 HTTP 的 API,可以方便做一些复杂的处理。 Solr 1.4 主要特性: 复制不需要额外的脚本。仅仅在 solrconfig.xml 配置就行。同时... 阅读全文
posted @ 2009-09-16 12:12 searchDM 阅读(376) 评论(0) 推荐(0) 编辑