最近使用lucene开发一个搜索,在jsp下调用API始终找不到数据,把相同的代码写到servlet中测试,却可以检索到数据,在优快云上发帖,等待了一天,yiquanwen 给了个很启发的答案,原文地址:
http://topic.youkuaiyun.com/u/20090317/16/23ae6e45-9364-4664-9ef6-e9fb889dc0dd.html
平常学习JSP和servlet时候,知道jsp最后需要编译成servlet,但是jsp编译后的servlet没有放在原来jsp同一目录下,而是到了其他目录(这个大概根据servlet容器不同而不同),所以JSP中index的目录就无效了,编译后的servlet找不到index所以就检索不到结果。后来我在tomcat的work目录下,一层一层找下去,找到jsp对应的servlet所在文件夹,把index拷贝过去,还是路径不对,最后把index拷贝到tomcat根目录下,找到index目录了,但是出现索引的片段的啥啥问题,不管了,直接把索引程序生成索引的目录改到这里,再重新建立索引,居然可以了。
总结两点,lucene检索不到数据,大概是index目录没有找到,或者检索的字段拼写有误,
例外,索引文件好像不能随意拷贝来拷贝去的,我经验,能不能需要进一步确定。
开发中还遇到:
在jsp中调用lucene的API检索数据,有的关键字可以检索,有的不可以检索到数据,不可以检索到数据的关键字并不是不存在,我用JAVA程序测试,它们的确是有数据的,我想大概是JSP页面传递的一个编码问题,在群里发了个提问,
|
㊣左边の情缘
10:10:10
在tomcat里设置一下,可能是get方式提交的时候出现了问题。
|
在配置访问端口的地方加个 URIEncoding="utf-8" |
就在serve.xml的<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
改动下,网页设为utf8编码,居然正常了。
总算使lucene在jsp下正常跑了,总结上面经验,供大家遇到问题时参考,少耽误开发时间。