建议先将关键词进行分词

     //  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;
    }