lucene,基于QueryParser的搜索

  
  
  
  
  1.     public void queryParse(Query query , int num ){ 
  2.         try { 
  3.             TopDocs tds = this.searcher.search(query, num); 
  4.             System.out.println("查询到的结果数:"+tds.totalHits); 
  5.             for(ScoreDoc sd : tds.scoreDocs){ 
  6.                 doc = this.searcher.doc(sd.doc); 
  7.                 System.out.println("id:"+doc.get("id")+"---"+"name:"+doc.get("name")+"---"+"attachs:"+doc.get("attach")+"---"+"email:"+doc.get("email")); 
  8.             } 
  9.         } catch (IOException e) { 
  10.             // TODO Auto-generated catch block 
  11.             e.printStackTrace(); 
  12.         } finally { 
  13.             try { 
  14.                 this.searcher.close(); 
  15.             } catch (IOException e) { 
  16.                 // TODO Auto-generated catch block 
  17.                 e.printStackTrace(); 
  18.             } 
  19.         } 
  20.     } 
  21.  
  22. @Test 
  23.     public void testQueryParse() throws Exception{ 
  24.         //创建QueryParser对象 默认的搜索域为content 
  25.         QueryParser parser = new QueryParser(Version.LUCENE_35, "content"new StandardAnalyzer(Version.LUCENE_35)); 
  26.         //设置 空格的默认操作符为 AND  默认为OR 
  27. //      parser.setDefaultOperator(Operator.AND); 
  28.         //开启第一个字符的通配符配置 
  29.         parser.setAllowLeadingWildcard(true); 
  30.         //搜索content中包含like的 
  31.         Query query = parser.parse("like"); 
  32.          
  33.         //既有like又有football的 
  34.         query = parser.parse("like foot ball"); 
  35.          
  36.         //域name为5555的 
  37.         query = parser.parse("name:5555"); 
  38.          
  39.         //在查询中加入通配符配置 
  40.         query = parser.parse("name:5*"); 
  41.          
  42.         //通配符默认不能放在首位 
  43.         query = parser.parse("name:*6"); 
  44.          
  45.         //查询content中包含kenan的 从中减去name为333的 加上id为6的 
  46.         query = parser.parse("kenan -name:333 +id:6"); 
  47.          
  48.         //字符串id从1到3 匹配一个区间 包含两边 
  49.         query = parser.parse("id:[1 TO 3]"); 
  50.                  
  51.         //字符串id从1到3 匹配一个区间 不包含两边 
  52.         query = parser.parse("id:{1 TO 3}"); 
  53.                  
  54.         //匹配 content包含foot ball这个字符串的 
  55.         query = parser.parse("\"foot ball\""); 
  56.          
  57.         //like 和ball之间的距离小于等于2的  距离是他们之间的单词个数 
  58.         query = parser.parse("\"like ball\"~2"); 
  59.          
  60.         //模糊查询 
  61.         query = parser.parse("kenak~"); 
  62.         su.queryParse(query, 10); 
  63.     } 

 

你可能感兴趣的:(Lucene,QueryParser)