1.用户发表一篇文章,即时添加索引.
2.用户修改一篇文章,即时更新索引.
3.用户删除一篇文章,即时删除索引.
/**
* 添加文章,除向数据库添加文章外,为该文章创建索引
*
* @return
* @throws Exception
*/
public String articleAdd() throws Exception {
Integer articleId = this.articleManager.articleInsert(article);
article.setId(articleId);
this.createIndex(article);
return SUCCESS;
}
/**
* 为该文章创建索引的方法
*
* @return
* @throws Exception
*/
public void createIndex(Article article) throws Exception {
// 实例化分词器,使用的是中文分词器
Analyzer analyzer = new PaodingAnalyzer();
// 指定要保存的文件路径并保存到FSDirectory中
System.out.println(URLDecoder.decode(
AnalyzerAction.class.getResource("/date/index/article/")
.toString(), "UTF-8").substring(6));
FSDirectory directory = FSDirectory.getDirectory(URLDecoder.decode(
AnalyzerAction.class.getResource("/date/index/article/")
.toString(), "UTF-8").substring(6));
// true表示覆盖原来已经创建的索引,如果是false表示不覆盖,而是继续添加索引
IndexWriter writer = new IndexWriter(directory, analyzer, false);
Document doc = new Document();
doc.add(new Field("id", String.valueOf(article.getId()),
Field.Store.YES, Field.Index.UN_TOKENIZED));
doc.add(new Field("article_title", article.getArticleTitle(),
Field.Store.YES, Field.Index.TOKENIZED));
String content = FunctionUtil.Html2Text(article.getArticleContent());
doc.add(new Field("article_content", content, Field.Store.YES,
Field.Index.TOKENIZED));
writer.addDocument(doc);
writer.optimize();
writer.close();
}
public void deleteIndex(Article article)throws Exception{
// 实例化分词器,使用的是中文分词器
Analyzer analyzer = new PaodingAnalyzer();
// 指定要保存的文件路径并保存到FSDirectory中
System.out.println(URLDecoder.decode(
AnalyzerAction.class.getResource("/date/index/article/")
.toString(), "UTF-8").substring(6));
FSDirectory directory = FSDirectory.getDirectory(URLDecoder.decode(
AnalyzerAction.class.getResource("/date/index/article/")
.toString(), "UTF-8").substring(6));
// true表示覆盖原来已经创建的索引,如果是false表示不覆盖,而是继续添加索引
IndexWriter writer = new IndexWriter(directory, analyzer, false);
writer.deleteDocuments(new Term("id",String.valueOf(article.getId())));
writer.optimize();
writer.close();
}
分享到:
相关推荐
7. **论文部分**:论文可能详细阐述了系统的设计思路、实现方法、遇到的问题及解决方案,还可能包含了性能评估和未来改进方向。 8. **源代码分析**:压缩包中的源代码可以作为学习JSP和SQL结合实现Web应用的实例,...
- 创建索引、查询速度快:Sphinx使用倒排索引技术,显著提高了查询速度,同时支持实时索引更新,确保数据的即时性。 - 按服务类型进行分离:将搜索服务、数据存储服务分开,提高系统的可扩展性和稳定性。 - ...
例如,使用Output Cache减少页面生成时间,通过分布式缓存(如Redis)减轻数据库压力,或者通过调整数据库索引来加速查询。 8. 用户界面:BS架构下的用户界面通常基于HTML、CSS和JavaScript。Bootstrap或自定义CSS...
11. **论文撰写**:项目完成后,学生需要撰写论文,详细阐述项目的背景、目标、设计思路、实现技术、测试结果以及遇到的问题与解决方案,这是对整个学习过程的总结和反思。 这个毕业设计项目不仅能够锻炼学生的编程...
《计算机网络:自顶向下方法...思维导图可以帮助理清知识框架,缩写索引表则能提供即时的词汇解释,两者结合使用,能促进对复杂网络概念的理解和记忆。无论是自学还是课堂教学,这些工具都能极大地提高学习效果和效率。
3. 实时性:通过Ajax或者WebSocket技术实现客户端的实时更新,用户发送的消息能即时展示给其他在线用户。 4. 安全性:尽管没有数据库,但ZvChat仍需考虑防止恶意文件操作,例如通过验证用户身份、权限控制等方式。 ...
事务处理和索引优化是数据库设计中的重要环节,前者保证了数据的一致性,后者则提升了查询效率,这对于处理大量并发请求的企业级应用至关重要。 在系统架构上,可能采用了客户端-服务器(C/S)模式,客户端负责用户...
在ASP.NET中,这可能涉及到数据库操作、信号量(SignalR)或其他异步通信技术来实现实时更新。 4. **源代码分析**:源代码中,开发者可能会使用C#语言编写服务器端逻辑,包括处理客户端连接、解析接收到的数据、...
它的优点是操作简单、功能齐全,并能轻松地与ASP进行交互,实现数据的读取、更新和删除。 三、系统架构 这个毕业设计的系统架构通常包括前端用户界面和后端服务器处理两部分。前端通过HTML、CSS和JavaScript构建...
【OLTP与OLAP业务系统的Oracle优化思路】 Oracle数据库在OLTP(联机事务处理)和OLAP(联机分析处理)系统中的优化策略各有侧重,主要体现在对系统特性的理解和针对不同业务需求的调整。 1. **数据库业务类型分类*...
通过与ACCESS数据库的交互,ASP能够读取、更新和插入数据库中的数据,实现对仓库库存的实时查询和管理。 ACCESS数据库是微软Office套件的一部分,是一款轻量级的关系型数据库管理系统。它使用Structured Query ...
Ajax的核心在于能够在不刷新整个页面的情况下更新部分网页内容,从而提供更好的用户体验。在搜索引擎中,Ajax可以用于实时的搜索建议或者即时显示搜索结果,减少用户等待时间。 Lucene是Apache软件基金会的一个开源...
抢红包功能需要在实时通信(RTC)系统上构建,确保消息的即时性。这可能涉及服务器集群、数据库设计、负载均衡以及分布式系统的高可用性。同时,为了处理大量并发请求,系统需要具备良好的扩展性和并发处理能力。 *...
Druid是一款开源的分布式分析型数据库,专为高吞吐量、实时性、高...Druid的设计目标是通过其独特的数据存储模型、实时摄入能力和优化的查询性能来满足大规模数据集的分析需求,尤其是对于那些需要即时反馈的分析场景。
Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下更新部分网页的技术,它通过在后台与服务器进行少量数据交换,实现了网页的异步更新。在ASP.NET中,可以利用AJAX控件工具包或者jQuery库来...
当新的Java类库或版本发布时,用户可以方便地导入新文档,并自动更新索引。 6. **扩展性**: JHelp的源码设计考虑到了扩展性,允许添加新的解析规则和搜索策略,以适应不断发展的Java生态。 总的来说,JHelp通过...