2 Lucene笔记(二):创建LuceneUtils工具

publicclass LuceneUtils {
     public LuceneUtils() {}

     private static Directory directory;
     private static Version version;
     private static Analyzer analyzer;
     private static MaxFieldLength maxFieldLength;

     static{
           try {
               directory = FSDirectory. open(new File("F:/LuceneDB")) ;
               version = Version. LUCENE_30;
               analyzer = new StandardAnalyzer( version);
               maxFieldLength = MaxFieldLength.LIMITED;
          } catch (IOException e) {
               e.printStackTrace();
               throw new RuntimeException( e);
          }          
     }    
     public static Directory getDirectory() {
           return directory;
     }
     public static void setDirectory(Directory directory) {
          LuceneUtils. directory = directory;
     }
     public static Version getVersion() {
           return version;
     }
     public static void setVersion(Version version) {
          LuceneUtils. version = version;
     }
     public static Analyzer getAnalyzer() {
           return analyzer;
     }
     public static void setAnalyzer(Analyzer analyzer) {
          LuceneUtils. analyzer = analyzer;
     }
     public static MaxFieldLength getMaxFieldLength() {
           return maxFieldLength;
     }
     public static void setMaxFieldLength(MaxFieldLength maxFieldLength) {
          LuceneUtils. maxFieldLength = maxFieldLength ;
     }
    /**
     *javabean-->doc
     */ 
     public static Document javaBeanToDocument(Object obj) throws Exception {
          Document doc = new Document();
           Class clazz = obj.getClass();
          java.lang.reflect.Field[] fields = clazz.getDeclaredFields();
           for(java.lang.reflect.Field field : fields ){
               field.setAccessible( true); //暴力反射
              String name = field.getName();
              String methodName = "get"+ name.substring(0, 1).toUpperCase()+name.substring(1,name .length());
              Method method = clazz.getMethod(methodName , null);
              String value = method.invoke(obj, null).toString();
               //System.out.println(name+"="+value);
               doc.add( new Field( name, value, Store. YES, Index.ANALYZED));
          }
           return doc;
     }
     /**
      * doc-->javabean
      * /
     public static Object documentToJavaBean(Document doc, Class clazz) throws Exception{
          Object obj = clazz.newInstance();
          java.lang.reflect.Field[] fields = clazz.getDeclaredFields();
           for(java.lang.reflect.Field field : fields ){
               field.setAccessible( true); //暴力反射
              String name = field.getName();
              String value = doc.get( name);
              BeanUtils. setProperty(obj, name, value);
          }
           return obj;
     }
     //测试
     public static void main(String[] args) throws Exception {
          Article article = new Article(1, "搜索标题", "通过关键字搜索文章,搜点什么好呢?" );
          Document document = LuceneUtils.javaBeanToDocument(article);
           /*System.out.println(document.get("id"));
          System.out.println(document.get("title"));
          System.out.println(document.get("content"));*/
          System. out.println( "----------------------------------" );
          Article article1 = (Article) LuceneUtils.documentToJavaBean(document,Article.class);
          System. out.println( article1);
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值