建议先将关键词进行分词

    // tokenStream分词
    public static String analyze(Analyzer analyzer, String keyword) throws IOException {
        StringBuffer sb 
= new StringBuffer();
        TokenStream tokenStream 
= analyzer.tokenStream("content"new StringReader(keyword));
        
for (Token token = new Token(); (token = tokenStream.next(token)) != null;) {

            sb.append(token.term() 
+ " ");
        }
        
return sb.toString();

    }

设置关键词之间空格的与或关系

queryParser_and.setDefaultOperator(QueryParser.AND_OPERATOR);
queryParser_or.setDefaultOperator(QueryParser.OR_OPERATOR);


过滤特殊字符

    Query query_and = queryParser_and.parse(QueryParser.escape(keyword));


遇到多余一个空格后的处理

    /**
     * 
     * 把超过一个空格后面的转化为 OR 号表达式
     * 
     * 
@param wd
     * 
@return eg: ibm t60 mp3 液晶 ibm t60 OR mp3 OR 液晶
     
*/
    
public static String nvl(String value) {
        
return value == null ? "" : value;
    }

    
public static String parseWd(String wd) {
        String retwd 
= nvl(wd).replaceAll(" "" ").replaceAll("  "" ");
        String[] arr 
= nvl(retwd).split(" ");
        
if (arr != null && arr.length > 2) {
            retwd 
= (arr[0].trim().equals("OR"? "" : arr[0+ " "+ (arr[1].trim().equals("OR"? "" : arr[1]);
            
for (int i = 2; i < arr.length; i++) {
                
if (!arr[i].trim().equals("OR")) {
                    retwd 
+= " OR " + arr[i];
                }
            }
        }
        
return retwd;
    }