- 浏览: 389584 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (215)
- ubuntu (27)
- 虚拟机 (13)
- 数据库 (29)
- JAVA (40)
- 搜索 (23)
- 开发工具 (2)
- 产品 (2)
- 工具 (1)
- 应用服务器 (5)
- linux (17)
- log (1)
- 多线程 (3)
- 异常 (1)
- shell (6)
- 12306 ;互联网 (1)
- 持续集成&Hudson (4)
- js (1)
- JAVA OR-Map (1)
- 漏洞 (1)
- svn (1)
- MAVEN (3)
- 架构 (1)
- windows (1)
- json (1)
- web (3)
- jenkins (2)
- iptables (2)
- JAVA ssh (0)
- 项目管理 (1)
- tomcat (1)
- 安全 (1)
- 数据库 mysql (1)
- 性能 (1)
最新评论
-
sbwfgihc:
怎么用的啊,
<转>mysql 树查询语句 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
<转>Solr Suggest实现搜索智能提示 -
songsove:
请问您qq多少
solr 对拼音搜索和拼音首字母搜索的支持 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
<转>Solr Suggest实现搜索智能提示 -
norain1988:
这样就可以实现相关搜索了吗
solr 百度相关搜索类似功能的实现
lucene
排序
Lucene默认按照相关度(score)排序,为了能支持其他的排序方式,比如日期,我们在add Field的时候,必须保证field被Index且不能被tokenized(分词),并且排序的只能是数字,日期,字符三种类型之一
Lucene的IndexWriter调整
IndexWriter提供了一些参数可供设置,列表如下
属性 | 默认值 | 说明 | |
mergeFactor | org.apache.lucene.mergeFactor | 10 | 控制index的大小和频率,两个作用 |
maxMergeDocs | org.apache.lucene.maxMergeDocs | Integer.MAX_VALUE | 限制一个段中的document数目 |
minMergeDocs | org.apache.lucene.minMergeDocs | 10 | 缓存在内存中的document数目,超过他以后会写入到磁盘 |
maxFieldLength | 1000 | 一个Field中最大Term数目,超过部分忽略,不会index到field中,所以自然也就搜索不到 |
这些参数的的详细说明比较复杂:mergeFactor有双重作用
- 设置每mergeFactor个document写入一个段,比如每10个document写入一个段
- 设置每mergeFacotr个小段合并到一个大段,比如10个document的时候合并为1小段,以后有10个小段以后合并到一个大段,有10个大段以后再合并,实际的document数目会是mergeFactor的指数
把maxMergeDocs设置小,可以强制让达到一定数量的document写为一个段,这样可以抵消部分mergeFactor的作用.
minMergeDocs相当于设置一个小的cache,第一个这个数目的document会留在内存里面,不写入磁盘。这些参数同样是没有最佳值的, 必须根据实际情况一点点调整。
maxFieldLength可以在任何时刻设置, 设置后,接下来的index的Field会按照新的length截取,之前已经index的部分不会改变。可以设置为Integer.MAX_VALUE
RAMDirectory 和 FSDirectory 转化
RAMDirectory(RAMD)在效率上比FSDirectyr(FSD)高不少, 所以我们可以手动的把RAMD当作FSD的buffer,这样就不用去很费劲的调优FSD那么多参数了,完全可以先用RAM跑好了index, 周期性(或者是别的什么算法)来回写道FSD中。 RAMD完全可以做FSD的buffer。
为查询优化索引(index)
Indexwriter.optimize()方法可以为查询优化索引(index),之前提到的参数调优是为indexing过程本身优化,而这 里是为查询优化,优化主要是减少index文件数,这样让查询的时候少打开文件,优化过程中,lucene会拷贝旧的index再合并,合并完成以后删除 旧的index,所以在此期间,磁盘占用增加, IO符合也会增加,在优化完成瞬间,磁盘占用会是优化前的2倍,在optimize过程中可以同时作search。
并发操作Lucene和locking机制
- 所有只读操作都可以并发
- 在index被修改期间,所有只读操作都可以并发
- 对index修改操作不能并发,一个index只能被一个线程占用
- index的优化,合并,添加都是修改操作
Locing
lucence内部使用文件来locking, 默认的locking文件放在java.io.tmpdir,可以通过-Dorg.apache.lucene.lockDir=xxx指定新的dir, 有write.lock commit.lock两个文件,lock文件用来防止并行操作index,如果并行操作, lucene会抛出异常,可以通过设置-DdisableLuceneLocks=true来禁止locking,这样做一般来说很危险,除非你有操作系 统或者物理级别的只读保证,比如把index文件刻盘到CDROM上。
调试IndexWriter
IndexWriter 有一个infoStream的变量,调试信息从这里输出。可以把System.out设置给它
发表评论
-
百度GOOGLE的用户鼠标行为分析<转>
2012-08-29 09:37 1529转自:http://www.20ju.com/conte ... -
<转>庖丁解牛分词之自定义词库[自定义词典]
2012-07-03 10:21 934原链接: http://hi.baidu.com/stone_ ... -
庖丁(Paoding)分词的词典原理解析
2012-07-03 10:14 3676Paoding分词过程中词典 ... -
solr 百度相关搜索类似功能的实现
2012-06-27 16:26 5788这个功能的实现有几种不同的思路。 大概半个月前,我在网 ... -
solr 索引库同步数据库
2012-06-27 14:01 5667对于拼音和拼音首字母的支持,当你在搜商品的时候,如果想输 ... -
solr 对拼音搜索和拼音首字母搜索的支持
2012-06-27 13:52 9117对于拼音和拼音首字母的支持,当你在搜商品的时候,如果想输 ... -
<转>Solr Suggest实现搜索智能提示
2012-06-27 10:15 13967智能提示简介 搜索的智能提示目前是各大搜索的标配应用, ... -
IK的整个分词处理过程
2012-06-26 14:25 11599IK的整个分词处理过 ... -
Solr的检索运算符
2012-06-21 14:47 4252“:” 指定字段查指定值,如返回所有值*:*² “?” 表示 ... -
Solr 学习(5) —- Solr查询语法和参数
2012-06-21 14:25 11652、查询语法 solr的一些查询语法 ... -
Apache Solr schema.xml及solrconfig.xml文件中文注解
2012-06-21 10:55 1211一、字段配置(schema)schema.xml位于so ... -
<转>LUCENE3.0 自学吧 4 TermDocs
2012-06-07 22:13 1249利用TermDocs也是可以得到一些有用的结果。。。代码 ... -
<转>Lucene里经常被聊到的几个话题
2012-06-07 21:54 1279lvpei.cnblogs.com.自己总结的Lucen ... -
<转>浅谈文档索引普遍原理<笔记>
2012-06-07 21:49 1025--lvpei.cnblogs.com 搜索引擎普遍采 ... -
Lucene中Field类很重要
2012-06-07 21:46 8264org.apache.lucene.demo.Index ... -
Lucene架构简单分析
2012-06-06 15:30 1668Lucene简介Lucene 是一个基 ... -
<转>lucene3.0中Field.Index, Field.Store,Field.TermVector详解
2012-06-06 14:49 926lucene在doc.add(new Field(&quo ... -
<转>用于Lucene的各中文分词比较
2012-06-05 09:58 5620对几种中文分析器,从分词准确性和效率两方面进行比较。分析器依次 ... -
Lucene3参考资料
2012-06-05 09:46 1040http://wenku.baidu.com/view/706 ... -
lucene索引word/pdf/html/txt文件及检索(搜索引擎)
2012-06-04 14:59 993因为lucene索引的时候是 ...
相关推荐
4. **性能调优**:通过监控和分析系统性能,持续优化前端交互速度和后端检索效率。 综上所述,结合Ajax与Lucene构建搜索引擎不仅能够提供流畅的用户体验,还能实现高效的搜索功能。通过不断迭代优化,可以打造出一...
- **性能调优技巧**:分享一系列实用建议,帮助开发者优化应用程序性能。 - **扩展 Lucene 功能**:指导读者如何通过编写插件或修改核心代码来扩展 Lucene 的功能。 #### 知识点五:Lucene 社区贡献者经验分享 ...
在4.6.1版本中,文档提供了大量性能调优建议,包括内存管理、磁盘I/O优化以及并行处理策略等,帮助开发者最大化利用硬件资源。 8. **分布式搜索**: 对于大型数据集,Lucene 提供了Solr和Elasticsearch等分布式...
5. **错误排查与性能调优**: 通过查看源码,开发者可以深入理解索引和查询过程中的问题,从而进行有效的调试和优化。 ### Lucene 版本与更新 这里提供的源码是Lucene的3.5.0版本,较早但经典。随着时间的发展,...
Lucene管理与性能调优** - **配置与监控**:提供了关于如何配置和监控Lucene实例的建议。 - **内存管理和优化**:介绍了如何优化Lucene的内存使用,以提高性能。 - **索引优化策略**:讨论了不同的索引优化策略...
同时,合理的缓存策略、内存管理以及硬件配置都是影响Lucene性能的关键因素。 九、搜索建议与自动补全 为了提供友好的用户体验,Lucene可以实现搜索建议和自动补全功能。这通常通过创建一个专门的Suggester或使用...
8. **性能调优**:提供了实践性的建议,帮助开发者优化Lucene应用,包括硬件选择、索引设计、查询优化等方面。 9. **实战案例**:书中包含多个实际应用示例,如构建一个简单的搜索引擎、集成到Web应用中、构建垂直...
- **性能调优:** 针对大型数据集和高并发场景,Lucene提供了丰富的工具和配置选项来优化性能,例如缓存策略、分段合并等。 #### 四、Lucene的生态系统与资源 - **社区支持:** Lucene拥有一个活跃的社区,开发者...
6. **更新与优化**:讲解如何更新已有的索引,处理实时数据变化,以及如何进行性能调优,包括内存管理、缓存策略和索引碎片的处理。 7. **分布式搜索**:随着大数据的发展,Lucene的分布式搜索能力变得至关重要。书...
#### 十、管理和性能调优 - **管理指南**:提供了关于如何管理Lucene索引以及监控其运行状态的建议。 - **性能优化**:探讨了提高搜索效率的方法,包括缓存机制、索引优化等。 #### 十一、案例研究 - **实际应用...
#### 十一、管理和性能调优 - **最佳实践**:提供了一系列关于如何高效管理和维护Lucene索引的最佳实践。 - **性能监控**:介绍了如何监控Lucene系统的性能指标,并根据监控数据进行调优。 #### 十二、案例研究 -...
7. **性能调优**:提供实用的性能优化建议,包括硬件选择、内存管理、磁盘I/O优化和索引优化策略。 8. **案例研究**:通过实际项目案例,展示如何解决具体问题,以及在不同场景下如何应用Lucene。 9. **开发工具与...
6. **管理与性能调优**:提供了关于如何管理和优化Lucene性能的实用建议。 总之,《Lucene in Action》是一本非常全面且深入的指南,不仅适合初学者快速入门,也适合高级用户深入研究Lucene的各个方面。无论是从...
此外,针对性能优化,书中给出了很多实用建议,包括索引和查询调优,以及如何监控和调试Lucene应用程序。 总之,《Lucene in Action》中文版是一本全面而深入的指南,无论你是初学者还是有经验的开发人员,都能从中...
- **性能调优**:通过调整索引设置、缓存策略等提高搜索速度和响应时间。 **2. 实战案例** - **电子商务网站**:实现产品搜索功能,支持按类别、价格区间等筛选。 - **文档管理系统**:提供快速查找文档的能力,...
本文档是一个关于如何应用Apache Solr的企业教程,涵盖了安装配置、应用模式、定制索引和搜索服务、性能调优以及故障排查等多个方面。 首先,文档介绍了Solr的基本概念和特性,强调了Solr对Lucene的扩展以及支持的...
4. **监控和调优**:定期监控Lucene的性能,并根据实际情况调整参数,优化查询性能。 总结,Java工作流与Lucene 3.5的结合,可以极大地提升工作流系统的数据处理能力,特别是在数据检索和决策支持方面。通过熟练...