问 题 一:用户输入一些lucene保留字搜索,会造成后台抛出异常。保留字:+ - & | ! ( ) { } [ ] ^ ~ * ? : \ AND OR NOT
场 景:用户输入“+”,然后提交搜索,系统后台会抛异常。
处理方式:对于用户输入的特殊字符在查询前要进行过滤或替换或转义。
问 题 二:lucene在linux中运行,如果linux没有启用filesystem lock服务,lucene会抛出异常,导致无法正常读写索引。
场 景:本地winXP系统下测试lucene没有问题,但是放到linux下一直抛异常,然来是linux系统默认下没有启用filesyste lock服务。
处理方式:启用filesystem lock服务。执行命令:/etc/init.d/nfslock start。
问 题 三:lucene高亮显示时,如果搜索内容中包含特殊字符,会导致无法正常高亮显示。
场 景:比如“10/20/30”,用户搜索“10”,结果应该是“10/20/30”,10应为高亮色。但是由于“10/20/30”中含有“/”字符,导致10没有高亮显示。
处理方式:可以在高亮显示前对“/”进行转换,转成全角。
问 题 四:lucene在写过程中避免文件被锁住
场 景:当生成索引文件时,会生成一个write.lock文件锁定当前索引,避免并发操作,这时候再试图更新此索引文件,是会抛异常的,导致无法更新索引。
处理方式:一是代码本身规范,在写处理完时要记得调用lucene的方法释放锁,在finally中调用。
场 景:用户输入“+”,然后提交搜索,系统后台会抛异常。
处理方式:对于用户输入的特殊字符在查询前要进行过滤或替换或转义。
问 题 二:lucene在linux中运行,如果linux没有启用filesystem lock服务,lucene会抛出异常,导致无法正常读写索引。
场 景:本地winXP系统下测试lucene没有问题,但是放到linux下一直抛异常,然来是linux系统默认下没有启用filesyste lock服务。
处理方式:启用filesystem lock服务。执行命令:/etc/init.d/nfslock start。
问 题 三:lucene高亮显示时,如果搜索内容中包含特殊字符,会导致无法正常高亮显示。
场 景:比如“10/20/30”,用户搜索“10”,结果应该是“10/20/30”,10应为高亮色。但是由于“10/20/30”中含有“/”字符,导致10没有高亮显示。
处理方式:可以在高亮显示前对“/”进行转换,转成全角。
问 题 四:lucene在写过程中避免文件被锁住
场 景:当生成索引文件时,会生成一个write.lock文件锁定当前索引,避免并发操作,这时候再试图更新此索引文件,是会抛异常的,导致无法更新索引。
处理方式:一是代码本身规范,在写处理完时要记得调用lucene的方法释放锁,在finally中调用。