lucene学习

刚刚开始学习java,发现有一句话说得很好啊,java是一种由生产力的语言,呵呵,最近看了车东的lucene的文章,很受启发,不过在删除的时候碰到了问题,从数据库里取出数据,而数据是有主键的,希望在删除一条数据的时候,把相应的索引也更新了,在网上差了很多资料都没有方法,好像是太简单了,大家都不屑一提啊,却让我忙了半天,谁让我E文不好,而且是个新手,所以只好作为日记写下来:(

建立索引的时候用Field.Keyword来建立索引

while(rs.next()){
    Document doc = new Document();    
    doc.add(Field.Keyword("id",String.valueOf(rs.getInt(1))));
    System.out.println(rs.getInt(1));
    String body = rs.getString(3) + "+" + rs.getString(3);
    System.out.print(body);
    doc.add(Field.Text("name",rs.getString(2)));
    doc.add(Field.Text("remark",rs.getString(3)));
    //将文档写入索引     
    writer.addDocument(doc);
   }

那么在删除的时候,只要知道ID的值就可以删除:

Directory directory = FSDirectory.getDirectory("e:\\test", false);
         IndexReader reader = IndexReader.open(directory);
         //IndexReader.unlock(directory);
         Term term = new Term("id", "21");
        
         //Term term = new Term("name", tmp);
         int deleted = reader.delete(term);

         System.out.println("deleted " + deleted + " documents containing " + term);
         reader.close();
         directory.close();

另外,还有一个问题,我在windows平台下使用的时候,在建立索引的时候

IndexWriter writer;   
  //用指定的语言分析器构造一个新的写索引器(第3个参数表示是否为追加索引)   
  writer = new IndexWriter(indexPath, new StandardAnalyzer(), true);

这里的最后一个参数,照文档中记述的是,是否新建索引,true的时候是追加,但是如果我设置的false的时候,就出现Lock@XXXXXX  临时文件错误,不知道为什么?

不过,总的来说,这个lucene真是一个好东西,要学的东西还有很多啊

你可能感兴趣的:(windows,Lucene)