lucene 搜索不到中文

该博客主要讨论了在Lucene中遇到的中文搜索问题。通过示例代码展示了如何使用`WildcardQuery`来解决搜索不到中文的问题。文章指出,通过创建`WildcardQuery`实例并传入Term参数可以实现中文搜索。作者还提醒确保字段名和查询内容与数据库中的数据表一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class TestQuery {
 
  static Hits hits = null;  
     static Query query = null;
     static String queryString = "放得开"; 

     static DataOperator db = new DataOperator();
     static String sql ="select * from person ";
  static ResultSet r = db.executeQuery(sql);

  
  public static void main(String[] args) throws IOException, ParseException, SQLException {  
   ResultSetMetaData data=r.getMetaData();
   //获得所有列的数目及实际列数
   int columnCount=data.getColumnCount();
   System.out.println("列数/字段数:"+columnCount);
    System.out.println("queryString;"+queryString);
//    if(r.last()){
//     //先rs.last(),跳到最后一行,然后获得的行数就是查询集的行数,在rs.beforefirst()
//     System.out.println("行数/记录条数:"+r.getRow());
//    }

 //获得指定列的列名 
   String columnName = data.getColumnName(2);
    while(r.next()){
//     for(int i = 1 ; i<= data.getColumnCount() ; i++){  //循环表的字段          

      //获得指定列的列值
      String columnValue = r.getString(2);
        System.out.println("字段名:"+columnName+" 字段值:"+columnValue);
    

        }
       try {
      GetHit(columnName);
     } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }

//     }   
         
        
  public static Hits GetHit(String columnName) throws Exception{
   Hits hits = null;
   IndexSearcher searcher = new IndexSearcher("d:\\index");  

//         Analyzer analyzer = new StandardAnalyzer();  
         try {  
//             QueryParser qp = new QueryParser(columnName, analyzer);   //不可查询到中文
             Query query = new WildcardQuery(new Term(columnName,queryString));//可查询到中文
//             query = qp.parse(queryString);  
             if (searcher != null) {  

              hits = searcher.search(query);  
              System.out.println("hits.length():"+hits.length());
              if (hits.length()> 0) {  
                  System.out.println("找到:" + hits.length() + " 个结果!");
       
              }
                      
          }
         } catch (Exception e) {  
         }
   return hits;  
  
  }
 
}
————————————————————

字段名columnName和查询内容queryString要与查询的数据表一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值