zoukankan      html  css  js  c++  java
  • Lucene 4.4 依据Int类型字段删除索引

    1、方法一,通过Term删除
    Term构造中没有。Int类型须要转换成Lucene自带的类BytesRef 。
        
        /**
         * 依据商品ID删除索引文件
         * @param id
         */
        public void deleteDocument(int id)
        {;
            File file = new File("E://index");
            IKAnalyzer analyzer = new IKAnalyzer();
            IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_44, analyzer);
            IndexWriter indexWriter = null;
            Directory directory;
            try {
                directory = FSDirectory.open(file);
                // 创建 IndexWriter
                indexWriter = new IndexWriter(directory, indexWriterConfig);
    	  	   		BytesRef bytes = new BytesRef(NumericUtils.BUF_SIZE_INT);
                        		NumericUtils.intToPrefixCoded(id, 0, bytes);
                        		Term term = new Term(field, bytes);
    
               
                indexWriter.deleteDocuments(term);
                indexWriter.close();
               
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
               
        }
    
    2.方法二,使用NumericRangeQuery
    
    /**
         * 依据商品ID删除索引文件
         * @param id
         */
        public void deleteDocument(int id)
        {;
            File file = new File("E://index");
    
    
            IKAnalyzer analyzer = new IKAnalyzer();
            IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_44, analyzer);
    
    
            IndexWriter indexWriter = null;
            
    
    
            Directory directory;
            try {
                 directory = FSDirectory.open(file);
                 // 创建 IndexWriter
                 indexWriter = new IndexWriter(directory, indexWriterConfig);
    	  	   		Query numbericRangeQuery = NumericRangeQuery.newIntRange("ID",id-1, id+1, false, false);	            
                 indexWriter.deleteDocuments(numbericRangeQuery);
                 indexWriter.close();
                
                 } catch (IOException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                 }           
               
        }
    


  • 相关阅读:
    Dubbo学习记录(一)
    Quartz定调度简单案例
    oracle中批量生成字段类型的脚本
    MsSQLserver中修改字段值系统自动生成的脚本
    根据oracle的主键列生成SQLserver的主键
    SQLServer2005如何批量修改架构名
    win10 下oracle tns通过IP无法访问的解决办法
    PD PDM模型中关系设置为概念模型样式
    PB12.5.2安装
    Java Web 项目目录规范
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5276443.html
Copyright © 2011-2022 走看看