现在的位置: 首页 > 综合 > 正文

利用solrj管理文章检索

2013年08月20日 ⁄ 综合 ⁄ 共 1214字 ⁄ 字号 评论关闭

近几天,一直纠结中文乱码问题,solr查询出来的结果没有乱码,但如果加高亮显示,中文就会有乱码,到现在还搞不清楚原因

 

结合上次写的文件上传下载删除示例,现在的想法,是当用户传一个文件成功后,即将这个文件同时也加到solr索引中,然后提供一个简单的查询页面,这个页面可以根据用户输入的关键字,来检索到是哪个文档,并提供该文件的下载便可,不用像百度那样,高亮显示关键字,并展示文档关键字部分文字,老师说暂时不用做那么复杂,呵呵,正好,高亮显示中文乱码

 

为了solr支持中文查询,将tomcat中的server.xml编码设为utf-8,而导致文件上传下载删除出现了问题,因为前面用的是GBK编码,页面改成utf-8就好了,不过在下载的servlet中纠结了好一阵时间,都准备不用servlet来实现,而改用jsp直接去实现 ,因为在servlet中下载文件时,会弹出迅雷提示框,如果选用使用IE保存,是不会有问题的,只在控制台中会打出一段错误,提示文件名不存在,如果直接使用迅雷来保存,更有问题,不光控制台有错,而且保存的文件还是空文件.

 

后来通过debug跟踪才发现,原来这个下载的servlet会执行两次,第一次进来时,从request中取的文件名是对的,写完文件后,因为弹出了保存文件提示框,又一次执行这个servlet,此时再去取读下载的地址文件名,因为这个request中的信息编码不一样了,所以就出错了,第一次进来时传的参数页面是从utf-8的页面传过来的,不知道是不是这样理解的,我还搞不清楚,有知道的大侠还烦请指教,反正debug是这个servlet执行了两次,很奇怪,为什么呢,我猜是因为弹出了一个选择是打开/保存/取消的对话框.当选保存后,就会到迅雷下载界面,如果是中文名,后一次取的文件名就会是乱码,所以就提示文件不存在了,当然对于英文的文件名不会错

 

后来解决方案是在程序中,加了一个判断,如果文件不存在,就不执行了,其实在第一次servlet时就已经完成了对下载文件流的读取,这样第二次的 servlet就相当于是不执行了,这样就不报错了,这样也不用在JSP中实现下载了,唯一的问题是迅雷提示框中,不默认显示文件名,下载后的文件名和文件内容都是好的,选使用IE保存会默认给一个文件名

 

在删除文件时,应该将文件对应的索引也删掉

后面可以将这个拷到ubuntu下去运行一下,结合glusterfs提供的volueme挂载的目录测试一下,注意前面没有解决的中文乱码,估计是ubuntu系统本身的中文问题还没解决吧

抱歉!评论已关闭.