lucene DEMO luceneweb加入自己的分析器就产生错误,大家看看呀
我自己写了一个中文分析器,名为zhAnalyzer,在DOS下,中文索引能正常索引,中文查询也能正常查询,就是在luceneweb下不正常,很奇怪的不正常。
我是把result.jsp中Analyzer analyzer = new StandardAnalyzer(); 修改为我自己写的zhAnalyzer,修改后为Analyzer analyzer = new zhAnalyzer();
搜索的时候出现的问题如下:
描 述 服务器遇到内部错误,无法满足这个访问请求
异 常 org.apache.jasper.JasperException: Exception in JSP: /results.jsp:84
81: Analyzer analyzer = new zhAnalyzer(); //construct our usual analyzer
82: try {
83: QueryParser qp = new QueryParser("contents", analyzer);
84: query = qp.parse(queryString); //parse the
85: } catch (
ParseException e) { //query and construct the Query
86: //object
87: //if it's just "operator error"
Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handle
JspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
起 因 java.lang.NullPointerException org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.java:519)
org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1324)
org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1211)
org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1139)
org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1128)
org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:170)
org.apache.jsp.results_jsp._jspService(results_jsp.java:177)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
但是如果我不把分析器换了,还是用原来的StandarAnalyzer,搜索英文能正常搜索,搜索中文搜索不出来。
更奇怪的还在后面呢,换用我自己写的zhAnalyzer后,如果我在接收参数时加入
request.setCharacterEncoding("GBK");
queryString=new String(queryString.getBytes("iso-8859-1"),"GBK");
再查询的的时候,输入中文页面显示
Error while parsing query: Cannot parse '??': '*' or '?' not allowed as first character in WildcardQuery
输入英文查询也是上面出现的那个异常情况。
我狂晕,我估计跟编码问题有关,我晕,找不出来错误,烦的要命。
------解决方案--------------------
换第三方的中文解析实现吧。 IKAna。。。 好像这个不错
------解决方案--------------------
还真有些晕
没做过这方面的
学习了
帮顶一下