出于需要,再次使用lucene,之前毕设用的这个(1.4.3版本),现在用的很多api(3.3.0)还查不多,只是说有些惯用法不一样了,这里记录下。
1:关于分词,可以去这里参考下
http://www.open-open.com/74.htm
分词组件用的JE上的IK分词,也是经过多方考虑才使用这个,需要确保一点是,索引和搜索的时候2个分析器要使用一样的,之前自作聪明得用了lucene自带的空格分词器结果and操作就有问题。
如果之前有用过JE分词的话,也还记得这个东西,之前在open-open上有的,现在已经下架了,最后的版本是1.5.3
2:关于索引优化方面
IndexWriter 这个类的所有方法都是线程安全的,具体见javadoc
<a name="thread-safety"></a><p><b>NOTE</b>: {@link
IndexWriter} instances are completely thread
safe, meaning multiple threads can call any of its
methods, concurrently. If your application requires
external synchronization, you should <b>not</b>
synchronize on the <code>IndexWriter</code> instance as
this may cause deadlock; use your own (non-Lucene) objects
instead. </p>
所以可以多线程的使用addDoc操作,这个具体的线程还依赖一个因子maxThreadStates,这个的默认值是8
/** The maximum number of simultaneous threads that may be
* indexing documents at once in IndexWriter; if more
* than this many threads arrive they will wait for
* others to finish. */
public final static int DEFAULT_MAX_THREAD_STATES = 8;
不过如果你的机器核数不超过8的话,这个值可以不用修改了,已经足够使用了。
参考下 wiki
How to make indexing faster
http://wiki.apache.org/lucene-java/ImproveIndexingSpeed
我们可以做的是 设置RAMBuffer的大小,这个大小不是说越大越好,也需要考虑实际情况,一般是最大文件的2倍就查不多了,默认值是16M ,可以利用 setRAMBufferSizeMB 来设置大小。
3:关于搜索
参考下wiki
How to make searching faster
http://wiki.apache.org/lucene-java/ImproveSearchingSpeed
1)Open the IndexReader
with readOnly=true
2)using NIOFSDirectory instead of FSDirectory.
4:针对索引更新,我这里是一天一更新,不需要做实时更新,实时更新可以考虑其他的如solr的实现等等,一天一更新,采取的策略是,新索引建立好了以后直接替换 索引和 搜索的对象实例,老的索引数据删除,引用之间的替换可以说是瞬间完成,所以如果实时索引在其他机器,当新的搜索器建立好了,可以瞬间替换的。
分享到:
相关推荐
一步一步跟我学习lucene是对近期做lucene索引的总结,
重要Lucene多线程操作实现.pdf
【重要】Lucene多线程操作实现.pdf
【重要】Lucene多线程操作实现[定义].pdf
Lucene简单实例记录 简单Luncene的示例应用
Lucene 全文检索实践.pdf(清晰版本)
NULL 博文链接:https://iamyida.iteye.com/blog/2196855
lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例
Lucene 搜索引擎框架 基础实践Lucene 搜索引擎框架 基础实践
NULL 博文链接:https://baobeituping.iteye.com/blog/847043
lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....
Lucene创建索引,查询索引的简单使用。
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习...
本文是整理的关于lucene的一些简单的介绍,以及对于lucene的简单的使用。
lucene简单demo lucene简单demo lucene简单demo lucene简单demo
Lucene的简单介绍,也介绍了搜索的原理,非常简短,适合入门的使用
资源名称:Lucene搜索引擎实践课程视频与源码资源目录:【】Lucene1【】lucene10【】lucene11【】lucene12【】lucene13【】lucene14【】lucene15【】lucene16【】lucene17【】lucene18【】lucene19【】 资源太大,传...
这是一个用java实现的lucene简单应用,大家可以参考
lucene并行索引