我自己写了一个中文分析器,名为zhAnalyzer,在DOS下,中文索引能正常索引,中文查询也能正常查询,就是在luceneweb下不正常,很奇怪的不正常。
我是把result.jsp中Analyzer analyzer = new StandardAnalyzer(); 修改为我自己写的zhAnalyzer,修改后为Analyzer analyzer = new zhAnalyzer(); 
搜索的时候出现的问题如下:
描 述 服务器遇到内部错误,无法满足这个访问请求异 常 org.apache.jasper.JasperException: Exception in JSP: /results.jsp:8481:                 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.handleJspException(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
输入英文查询也是上面出现的那个异常情况。我狂晕,我估计跟编码问题有关,我晕,找不出来错误,烦的要命。