solr新建富文本索引慢

一、solrj新建文档索引官方代码。新建一个request,为这个request添加文件,行为,参数,然后提交给solr服务器。

ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract");
up.addFile(new File("mailing_lists.pdf"));
up.setParam("literal.id", "mailing_lists.pdf");
up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
result = server.request(up);

二、最初采用单线程新建索引方式,发现新建60个文档需要30分钟,900个文档目测要一天(导致这个问题的原因后面再说)。所以编写了多线程建立索引的方式。结果时间确实大大减少了,900个文档需要40分钟。但是查阅官方资料发现,solr建索引的速度在每秒10-150个文档之间。所以这个速度还是太低。查看日志发现为文档建索引的时间是越来越长的。

三、根据日志估计是缓存的问题,修改solr.config文件中的缓存设置。新建900个文档的索引时间仅仅由40分钟提高到了30多分钟。所以不是缓存的问题。

四、继续查看日志,发现每次提交都导致openSearcher,和registered new search。以为是每次为文件建索引都要提交导致的。所以修改官方提供的代码。不设置Action。并且到最后才提交文档。细心的读者看到以下代码可能就会发现本菜鸟错在哪里了。代码如下:

ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract");
for(File file:files){
    up.addFile(new File("mailing_lists.pdf"));

    up.setParam("literal.id", "mailing_lists.pdf");

    //up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);//注释这行代码。
    server.request(up);// 
} 
server.commit();

五、发现修改新建索引速度还是不提高。于是各种折腾,看源码,重写源码。各种尝试4天左右。发现request的contentStream数量不对。调用up.getContentStreams().size()发现contentStream是递增的。好吧,终于找到原因了。我把ContentStreamUpdateRequest up声明在循环体外面,导致addfile每次往up里面添加file。最终文件越来越多,时间自然也就越来越慢了。(这个错误真的太低级了,之前看到说solrserver是重量级的,想当然以为up也是重量级的。放在循环体外可以优化性能)。

六、虽然犯了这个低级错误,但是最终还是了解了很多solr缓存,以及不用单个文件每次都调用commit的方法。还是不错了。最终代码如下:

ContentStreamUpdateRequest up;
for(File file:files){
    up=new ContentStreamUpdateRequest("/update/extract");
    up.addFile(new File("mailing_lists.pdf"));
    up.setParam("literal.id", "mailing_lists.pdf");
    //up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);//注释这行代码。
    server.request(up);//这里的server使用的是EmbeddedSolrServer。
} 
server.commit();
时间: 2024-11-08 21:24:58

solr新建富文本索引慢的相关文章

富文本编辑器和fastdfs的使用

宜立方商城的系统架构a) 功能介绍(项目架构,有哪些功能模块,这些功能模块如何实现?)b) 架构讲解工程搭建-后台工程c) 使用maven搭建工程(后台工程如何搭建?)d) 使用maven的tomcat插件启动工程SSM框架整合. 服务中间件dubbo,使用dubbo实现soa架构.项目改造为基于SOA架构(什么是SOA架构,有什么好处,如何使用),面向服务的架构 图片上传功能分析,图片服务器,如何保存图片,如何访问图片?nginx的安装:反向代理服务器.Nginx配置虚拟机,Nginx实现反向

富文本编辑器 CKeditor 配置使用 (带附件)

Ckeditor下载地址:http://ckeditor.com/download 1.CKeditor的基本配置 var textval=CKEDITOR.instances.TextArea1.getData(); //获取带HTML的值 var stemTxt=CKEDITOR.instances.TextArea1.document.getBody().getText();//获取纯文本 CKEDITOR.instances.TextArea1.setData(data.content)

图解DevExpress RichEditControl富文本的使用,附源码及官方API

9点半了,刚写到1.2.   该回家了,明天继续写完. 大家还需要什么操作,留言说一下,没有的我明天继续加. 好久没有玩DevExpress了,今天下载了一个玩玩,发现竟然更新到14.2.5了..我去. 本章主题: 创建项目,窗体搭建 给RichEditControl添加工具条 创建自定义的工具条按钮项 图片解析操作 修正文档字体 内容搜索功能 导入导出功能(文本/HTML/Word) 官方相关API 废话不多说,进入正题. 一.创建项目,窗体搭建 1.新建C#.NET WinForms应用程序

iOS之富文本

之前做项目时遇到一个问题: 使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结果在XCode中查遍其所有属性才发现,UITextView居然没有调整行间距的接口,于是忍住不心里抱怨了一下下. 但是问题还是要解决的,上网一查才发现,iOS不仅有富文本处理的功能,而且对于文字排版的处理能力那是相当的强大,看来我是孤陋寡闻了. 正题开始之前插播一点基础知识: 在iOS中或者Mac OS X中怎样才能

转载的一个富文本,挺实用的

文章内容大纲 1.NSMutableAttributedString的基本使用 2.NSMutableAttributedString的简易封装 3.使用开源代码GOBMarkupPaser处理富文本 4.UITextKit简介 5.编程思想的相关思考 前言 富文本使用案例: 这里我自己也用了富文本实现了简单的却也是常用的例子: 对于最后面的¥50中划线这种设置,估计只有富文本最好用了. 在IOS或者Mac OS X通过UIKit提供的用来显示字符串控件有三个: UILable,UITextFi

轻量级web富文本框——wangEditor使用手册(4)——配置下拉菜单

1. 引言 上一节(第三节)<轻量级web富文本框——wangEditor使用手册(3)——如何自定义配置菜单>描述了如何自定义配置一个新加入的菜单.在第二节中我们演示了如何添加一个简单的菜单,这一节我们要加入一个稍微复杂一点的菜单——下拉菜单类型——增加一个“设置标题”下拉按钮 下载地址:https://github.com/wangfupeng1988/wangEditor demo演示:http://www.cnblogs.com/wangfupeng1988/p/4185508.htm

轻量级web富文本框——wangEditor使用手册(1)——基本应用

1. 介绍&下载 wangEditor是用javascript编写的轻量级web富文本编辑器,依赖于jQuery和fontAwesome字体库,支持所有浏览器.使用wangEditor可以轻松创建web富文本框,并可以自定义扩展菜单功能.wangEditor所有源码都已经在github上开源下载. 下载地址:https://github.com/wangfupeng1988/wangEditor 交流QQ群:164999061 2. 生成富文本框 2.1 下载 从https://github.c

富文本编辑器CKEditor的使用

由于最近在架构一个pc端b/s结构的项目,项目中有个论坛模块,当用户发帖时,需要用到富文本编辑器,考虑了一下,决定使用CKEditor富文本编辑器,虽然现在问世的富文本编辑器很丰富,比如还有百度的UEditor等等,但是我选择使用CKEditor的原因是它能快速引入到我的项目中去.马上附上详细步骤: (1).工具准备,下载CKEditor:http://ckeditor.com/download(我的项目下载使用的是标准版本:ckeditor_4.7.1_standard)(2).部署到自己项目

UMeditor百度富文本编辑器的使用

批量上传的图片在线管理没法查看图片 是因为jar包本身的Bug,这里暂时做了个替换展示.就是找到Img.js  然后搜索 img.set 替换下就好了 var url=list[i].url ; url=url.replace("D:/JavaWorkSpace/.metadata/.me_tcat7/webapps/WebEUEdit",""); //img.setAttribute('src', urlPrefix + list[i].url + (list[i