`
xinyangwjb
  • 浏览: 81759 次
  • 性别: Icon_minigender_1
  • 来自: 信阳
社区版块
存档分类
最新评论

关于lucene实时更新的纠结

 
阅读更多
仿百度文库这个小项目中,文档信息分别存入数据库和lucene
JavaBean:docInfoOracelTable:DOC_INFOcommentluceneIndex
docIdDOC_ID主键IDdocId
userIdUSER_ID用户IDuserId
logIdLOG_ID用户名logId
titleTITLE文档名title
summarySUMMARY文档简介,查询列表下的几行小字summary
mimeMIME文档后缀名mime
createTimeCREATE_TIME文档创建时间createTime
hitsHITS点击次数hits
文档内容context

其中hits更新很频繁,数据库可以承受,但是lucene的更新时删除原索引然后重新创建,这个频繁的更新并不是很好。
全文检索查询的只是lucene,并不去查数据库,lucene不更新,就无法做到实时。

最普通的做法:先更新索引,再更新数据库,这样能实时,但是显然还是很慢。特别是索引文件很大的时候。

用Job任务定时执行:索引文件的更新只能用线程定时根据条件触发更新。这样带来的问题是做不到实时。新增的数据用不到索引会很慢。

建立缓存:加一层缓存,数据结构根据业务定,hashmap也好,treemap也好,新增的数据放入缓存,等到缓存满一定容量的时候去触发线程更新索引文件。
查询的时候顺序是索引,缓存。先全文检索索引,再查缓存看有没有改变,然后将改变封装进来。
这样就不会因为索引的更新而影响效率了。
是不是很痛苦!
分享到:
评论

相关推荐

    lucene近实时搜索

    lucene 近实时搜索 很清楚的解释了关于lucene近实时搜索的代码。很值得学习

    Lucene 实时搜索视频详解

    2. **段合并**:虽然实时更新很便捷,但过多的小段会降低搜索效率。因此,Lucene 会定期进行段合并,优化索引结构。 3. **Near Realtime Search (NRT)**:通过使用 NRT 管理器,开发者可以在保持高搜索性能的同时,...

    关于lucene建立数据库索引的更新说明

    1. **资料的准确性**:由于网络上的信息繁多且质量参差不齐,使用Lucene时要确保所参考的教程或文档是最新的,因为版本更新可能导致某些方法或功能的改变。例如,旧版本中可能使用的`Hits`类在新版本中已被废弃,应...

    实时搜索引擎源码LUCENE 实时搜索引擎源码LUCENE

    LUCENE支持实时索引,意味着当新文档或现有文档更新时,无需重建整个索引,而只需对变化的部分进行更新。LUCENE的Segment机制使得这一过程成为可能,新添加的文档会被写入新的Segment,而旧的Segment保持不变。 ###...

    lucene5+zoie实现近实时索引

    总结来说,结合Lucene 5的优秀搜索性能和Zoie的实时索引能力,我们可以构建出一个既能处理大规模数据,又能实现实时更新的搜索引擎。这种技术方案对于那些对数据时效性要求高的企业而言,无疑是一种理想的解决方案。...

    基于lucene创建实时索引基础jar包源码

    1) 提供实时索引的创建、管理 2) Query的创建 详细介绍参照博客:http://blog.csdn.net/xiaojimanman/article/details/20624739 中的介绍

    lucene,lucene教程,lucene讲解

    lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....

    lucene in action英文版 lucene 3.30包

    Lucene允许动态更新和删除文档,这在实时搜索场景中非常重要。更新文档时,Lucene会处理旧索引和新索引的合并;删除文档时,它会在索引中添加删除标记。 5. **性能优化** 为了提升搜索效率,Lucene提供了一些优化...

    lucene3.0 lucene3.0

    lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0

    关于Lucene的词典FST深入剖析-申艳超1

    《关于Lucene的词典FST深入剖析》这篇文章是由申艳超撰写的,主要探讨了Apache Lucene这个全文搜索引擎库中的一个关键数据结构——有限状态转换器(Finite State Transducer,简称FST)。FST在Lucene中被用于构建和...

    Lucene Demo(创建、增加、更新、删除索引等)

    在提供的 `LuceneTest` 文件中,可能包含了示例代码,用于演示如何使用 Lucene 进行索引的创建、增加、更新和删除。这些代码通常会包含以下步骤: 1. 初始化 `Directory` 对象,这将指向索引存储的位置。 2. 创建 `...

    一个关于lucene实例

    在这个"一个关于lucene实例"的压缩包中,很可能是为了帮助初学者理解并掌握Lucene的基本用法和核心概念。 Lucene的主要功能包括文档的索引和搜索。在索引过程中,它能够分析文本,将文本分词,然后将这些词语转换为...

    计算机专业外文翻译(lucene相关)

    本文翻译了论文"Scale-up x Scale-out: A Case Study using Nutch/Lucene",介绍了计算机专业领域中关于Lucene相关的知识点。 Scale-up vs Scale-out 论文中讨论了两个相对的方法:向上扩展(Scale-up)和向外...

    lucene in action源码

    10. **实时搜索**:Lucene允许动态添加、删除和更新文档,实现近实时的搜索体验。 11. **扩展性**:Lucene可以与其他项目结合,如Solr和Elasticsearch,以构建大型的分布式搜索解决方案。 12. **LuceneInAction...

    Lucene3.5源码jar包

    7. **近实时搜索(NRT)**:从3.0版本开始,Lucene引入了NRT机制,允许在不完全刷新索引的情况下返回最新结果。`IndexWriter.addDocument()`和`IndexWriter.commit()`等方法体现了这一特性。 8. **多字段搜索**:...

    Annotated Lucene 中文版 Lucene源码剖析

    此外,书中还会讨论Lucene的更新和维护,包括如何在已有的索引上添加、删除或修改文档,以及如何进行索引优化。这涉及到IndexWriter、SegmentMerger等类,它们确保了索引的一致性和性能。 在实际应用中,Lucene通常...

    Lucene资料大全(包括Lucene_in_Action书等)

    6. **更新与删除**:Lucene支持动态索引更新,可以添加、修改或删除文档,并实时反映在搜索结果中。 7. **多字段搜索**:Lucene允许在多个字段上同时进行搜索,可以通过FieldSelector选择参与搜索的字段。 8. **...

    lucene in action 第二版

    根据给定文件信息,这里将详细介绍关于《Lucene in Action 第二版》书籍的知识点。这本书是关于Java Lucene教程的,主要面向开发者学习使用Lucene进行搜索引擎开发。 ### 书名知识点: 《Lucene in Action 第二版...

    Java搜索引擎 Lucene

    在实际应用中,Lucene通常与Solr或Elasticsearch等工具结合使用,以提供更高级的功能,如集群管理、分布式搜索、实时索引和更丰富的搜索特性。这些工具在Lucene的基础上添加了更多管理和扩展功能,使搜索解决方案...

    lucene 2.0 api以及lucene 3.0 api

    1. **索引构建**: Lucene 2.0 提供了 `IndexWriter` 类,用于创建和更新索引。开发者可以使用 `Document` 类来封装待索引的数据,然后通过 `addDocument()` 方法添加到索引中。 2. **查询构造**: 通过 `QueryParser...

Global site tag (gtag.js) - Google Analytics