`
- 浏览:
81759 次
- 性别:
- 来自:
信阳
-
仿百度文库这个小项目中,文档信息分别存入数据库和lucene
JavaBean:docInfo | OracelTable:DOC_INFO | comment | luceneIndex |
docId | DOC_ID | 主键ID | docId |
userId | USER_ID | 用户ID | userId |
logId | LOG_ID | 用户名 | logId |
title | TITLE | 文档名 | title |
summary | SUMMARY | 文档简介,查询列表下的几行小字 | summary |
mime | MIME | 文档后缀名 | mime |
createTime | CREATE_TIME | 文档创建时间 | createTime |
hits | HITS | 点击次数 | hits |
无 | 无 | 文档内容 | context |
其中hits更新很频繁,数据库可以承受,但是lucene的更新时删除原索引然后重新创建,这个频繁的更新并不是很好。
全文检索查询的只是lucene,并不去查数据库,lucene不更新,就无法做到实时。
最普通的做法:先更新索引,再更新数据库,这样能实时,但是显然还是很慢。特别是索引文件很大的时候。
用Job任务定时执行:索引文件的更新只能用线程定时根据条件触发更新。这样带来的问题是做不到实时。新增的数据用不到索引会很慢。
建立缓存:加一层缓存,数据结构根据业务定,hashmap也好,treemap也好,新增的数据放入缓存,等到缓存满一定容量的时候去触发线程更新索引文件。
查询的时候顺序是索引,缓存。先全文检索索引,再查缓存看有没有改变,然后将改变封装进来。
这样就不会因为索引的更新而影响效率了。
是不是很痛苦!
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
lucene 近实时搜索 很清楚的解释了关于lucene近实时搜索的代码。很值得学习
2. **段合并**:虽然实时更新很便捷,但过多的小段会降低搜索效率。因此,Lucene 会定期进行段合并,优化索引结构。 3. **Near Realtime Search (NRT)**:通过使用 NRT 管理器,开发者可以在保持高搜索性能的同时,...
1. **资料的准确性**:由于网络上的信息繁多且质量参差不齐,使用Lucene时要确保所参考的教程或文档是最新的,因为版本更新可能导致某些方法或功能的改变。例如,旧版本中可能使用的`Hits`类在新版本中已被废弃,应...
LUCENE支持实时索引,意味着当新文档或现有文档更新时,无需重建整个索引,而只需对变化的部分进行更新。LUCENE的Segment机制使得这一过程成为可能,新添加的文档会被写入新的Segment,而旧的Segment保持不变。 ###...
总结来说,结合Lucene 5的优秀搜索性能和Zoie的实时索引能力,我们可以构建出一个既能处理大规模数据,又能实现实时更新的搜索引擎。这种技术方案对于那些对数据时效性要求高的企业而言,无疑是一种理想的解决方案。...
1) 提供实时索引的创建、管理 2) Query的创建 详细介绍参照博客:http://blog.csdn.net/xiaojimanman/article/details/20624739 中的介绍
lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....
Lucene允许动态更新和删除文档,这在实时搜索场景中非常重要。更新文档时,Lucene会处理旧索引和新索引的合并;删除文档时,它会在索引中添加删除标记。 5. **性能优化** 为了提升搜索效率,Lucene提供了一些优化...
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
《关于Lucene的词典FST深入剖析》这篇文章是由申艳超撰写的,主要探讨了Apache Lucene这个全文搜索引擎库中的一个关键数据结构——有限状态转换器(Finite State Transducer,简称FST)。FST在Lucene中被用于构建和...
在提供的 `LuceneTest` 文件中,可能包含了示例代码,用于演示如何使用 Lucene 进行索引的创建、增加、更新和删除。这些代码通常会包含以下步骤: 1. 初始化 `Directory` 对象,这将指向索引存储的位置。 2. 创建 `...
在这个"一个关于lucene实例"的压缩包中,很可能是为了帮助初学者理解并掌握Lucene的基本用法和核心概念。 Lucene的主要功能包括文档的索引和搜索。在索引过程中,它能够分析文本,将文本分词,然后将这些词语转换为...
本文翻译了论文"Scale-up x Scale-out: A Case Study using Nutch/Lucene",介绍了计算机专业领域中关于Lucene相关的知识点。 Scale-up vs Scale-out 论文中讨论了两个相对的方法:向上扩展(Scale-up)和向外...
10. **实时搜索**:Lucene允许动态添加、删除和更新文档,实现近实时的搜索体验。 11. **扩展性**:Lucene可以与其他项目结合,如Solr和Elasticsearch,以构建大型的分布式搜索解决方案。 12. **LuceneInAction...
7. **近实时搜索(NRT)**:从3.0版本开始,Lucene引入了NRT机制,允许在不完全刷新索引的情况下返回最新结果。`IndexWriter.addDocument()`和`IndexWriter.commit()`等方法体现了这一特性。 8. **多字段搜索**:...
此外,书中还会讨论Lucene的更新和维护,包括如何在已有的索引上添加、删除或修改文档,以及如何进行索引优化。这涉及到IndexWriter、SegmentMerger等类,它们确保了索引的一致性和性能。 在实际应用中,Lucene通常...
6. **更新与删除**:Lucene支持动态索引更新,可以添加、修改或删除文档,并实时反映在搜索结果中。 7. **多字段搜索**:Lucene允许在多个字段上同时进行搜索,可以通过FieldSelector选择参与搜索的字段。 8. **...
根据给定文件信息,这里将详细介绍关于《Lucene in Action 第二版》书籍的知识点。这本书是关于Java Lucene教程的,主要面向开发者学习使用Lucene进行搜索引擎开发。 ### 书名知识点: 《Lucene in Action 第二版...
在实际应用中,Lucene通常与Solr或Elasticsearch等工具结合使用,以提供更高级的功能,如集群管理、分布式搜索、实时索引和更丰富的搜索特性。这些工具在Lucene的基础上添加了更多管理和扩展功能,使搜索解决方案...
1. **索引构建**: Lucene 2.0 提供了 `IndexWriter` 类,用于创建和更新索引。开发者可以使用 `Document` 类来封装待索引的数据,然后通过 `addDocument()` 方法添加到索引中。 2. **查询构造**: 通过 `QueryParser...