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();
                 }           
               
        }
    


  • 相关阅读:
    3月18
    线段树求后继+环——cf1237D
    排序+stl——cf1237C
    思维+双指针+环——cf1244F
    模拟+双指针——cf1244E
    树的性质——cf1244D
    数学思维——cf1244C
    树的直径变形——cf1238F
    ac自动机暴力跳fail匹配——hdu5880
    状态压缩dp增量统计贡献——cf1238E(好题)
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5276443.html
Copyright © 2011-2022 走看看