摘要: solr版本solr 3.1 solr有几个配置文件是最重要的。solr.xml,solrconfig.xml,schema.xml,db-data-config.xml 如果你不使用solr自带的更新索引的功能,想用solrj编程来实现索引更新,那么我可以告诉你db-data-config.xml文件没什么用,一个一个来介绍下这几个配置文件吧。 看了网上很多大神的blog,然后自己开发经验之后发现这些配置文件都是蛮好理解的。 1. solr.xml配置例子:<?xml version="1.0" encoding="UTF-8" standalo 阅读全文
posted @ 2013-04-23 16:02 Dream-Weaver 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 1》 首先下载好solr,我用的是 solr3.1,下载地址: windows版本http://labs.xiaonei.com/apache-mirror/lucene/solr/3.1.0/apache-solr-3.1.0.ziplinux版本http://labs.xiaonei.com/apache-mirror/lucene/solr/3.1.0/apache-solr-3.1.0.tgz2》准备运行容器,我用的是tomcat6.0.20.如果是玩的话,也可以不用准备专门的容易,你只需解压好solr的下载包,找到example文件夹,然后运行 start.jar。具体指令:java 阅读全文
posted @ 2013-04-23 16:00 Dream-Weaver 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 如果看了第七节,那么可以告诉你,lucene对分组的支持的确不是很好,如果想对多个字段分组,问题就大了,必须每次自己将多个字段合并为一个字段,用 “,”或者空格分隔。这样得到的结构将会比较固定,假如有一天,我们要用3个字段来分组呢?那么代码就得重新写,这就不好了。如果每次变动都要改代码那么 这个方案就有待商榷。 现在好了,前面的其实都是铺垫,咱们要用的将会是solr。还记得当时自己用lucene实现了网站搜索的基本功能之后,总监给我说的这句话的时候。我直接抽过去了。。 solr是什么呢?solr是基于lucene的一个搜索引擎。对应索引的facet,分布式集群等都有比较好的支持。 S... 阅读全文
posted @ 2013-04-23 15:58 Dream-Weaver 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 假如你像用lucene来作分组,比如按类别分组,这种功能,好了你压力大了,lucene本身是不支持分组的。当你想要这个功能的时候,就可能会用到基于lucene的搜索引擎solr。不过也可以通过编码通过FieldCache和单字段,对索引进行分组,比如:想构造类别树。大类里面还有小类那种。这个功能实现起来可能会比较麻烦,主要是lucene提供的支持也不多,参考资料也不多。(以下代码都是我在做测试的时候做的,可以稍作修改满足相应需求。)//用于分组统计的对象GroupCollector import java.io.IOException;import org.apache.lucene.inde 阅读全文
posted @ 2013-04-23 15:57 Dream-Weaver 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 下面是中文分词搜索的代码: (测试代码,稍作改动可以正式使用。以下代码都是在lucene3.x中,最新版本3.4可能有改动。不过思路不变) public void searchIKIndexByString(String index){ //存放索引目录 File indexDir = new File("D:\\luceneIndex"); FSDirectory directory; try { //用索引目录构建directory对象 directory = FSDirectory.open(indexDir); //构造索引搜索器 IndexSearcher se. 阅读全文
posted @ 2013-04-23 15:54 Dream-Weaver 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 以下是通过lucene自带的 TermQuery来查询,即使用lucene自带的默认分词器,英文分词器进行分词。 在以后的文章中会将到中文分词等相关内容。(以下代码用在项目中会由io问题,最好再改进一下,这里只用了测试。考虑到公司代码安全问题,这里只给出开发中的部分测试代码。)public ArrayList<String> queryByString(String queryStr){ //上面文章中建立索引的文件目录 File indexDir = new File("D:\\luceneIndex"); FSDirectory directory; Arr 阅读全文
posted @ 2013-04-23 15:53 Dream-Weaver 阅读(145) 评论(0) 推荐(0) 编辑
摘要: Lucene将输入数据以一种倒排索引的数据结构进行存储,其原因是倒排索引并不是回答“这个文档中包含哪些单词?”,而是经过优化后快速回答“哪些文档包含这些单词X”,导致最终速度不只是提升一点点。1 protected String[] ids = {"1", "2"};2 protected String[] unindexed = {"Netherlands", "Italy"};3 protected String[] unstored = {"Amsterdam has lots of bridges 阅读全文
posted @ 2013-04-23 15:51 Dream-Weaver 阅读(287) 评论(0) 推荐(0) 编辑
摘要: lucene的优缺点:(1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。 (2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。 (3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。 (4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。 (5)已经默认实现了一套... 阅读全文
posted @ 2013-04-23 15:50 Dream-Weaver 阅读(718) 评论(0) 推荐(0) 编辑
摘要: lucene本身不支持中文分词,毕竟嘛,这是人家外国人写的开源框架,当然不太会考虑其他国家的使用,不过它支持对中文分词的 扩展。 下面是网上对几个中文分词器的评论: paoding :Lucene中文分词“庖丁解牛” Paoding Analysis imdict :imdict智能词典所采用的智能中文分词程序 mmseg4j : 用 Chih-Hao Tsai 的 MMSeg 算法 实现的中文分词器 IKAnalyzer :采用了特有的“正向迭代最细粒度切分算法“,多子处理器分析模式 http://linliangyi2007.iteye.com/blog/501228IKAnalyzer. 阅读全文
posted @ 2013-04-23 15:49 Dream-Weaver 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 垃圾回收的悖论 所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的相应时间,造成拥塞或堆积。这也是后续JDK增加G1算法的一个重要原因。 当然,上面是从技术角度出发解决垃圾回收带来的问题,但是从系统设计方面我们就需要问一下了:我们需要分配如此大的内存空间给应用吗? 我们是否能够通过有效使用内存而不是通过扩大内存的方式来设计我们的系统呢? 我们的内存中都放了什么 内存中需要放什么呢?个人认为,内存中需要放的 阅读全文
posted @ 2013-04-23 15:12 Dream-Weaver 阅读(180) 评论(0) 推荐(0) 编辑