1, method One, through the term deletion of the term structure is not, the type of int needs to be converted into Lucene Bytesref class. /** * Delete index file according to commodity 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); Create 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. Method two, use numericrangequery/** * To delete index files based on product 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); Create 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 (); } }
Lucene 4.4 Dropping an index based on the INT type field