IndexWriter writer = new IndexWriter(directory, new IKAnalyzer(), false,
IndexWriter.MaxFieldLength.LIMITED);每次建立索引时 都会把上次已经建立过索引的文件再次建立索引,有做过相关开发的麻烦指点下,谢谢大家.......

解决方案 »

  1.   

    这个估计要从文件上开始区分了
    我不清楚3.0的情况
    2.0/2.2的版本指定第三个参数为false确实是增量索引
    但你首先要判断key/id是否在索引中存在,
    或者保存索引执行历史,
    下一次根据执行历史增量索引。
    然后才能增加/删除及增量索引
    一概不区分直接用diretory index
    必然是这种结果了
    这种情况下一般来说是非实时的
    compass+lucene是一个很好的解决方案
      

  2.   

    谢谢 回复
    我想问下 但你首先要判断key/id是否在索引中存在,我现在就是不知道如何去比较?
    难道每次都要去遍历索引里已经存在的Document?数据量比较大···
    还有 compass 也许不太适合这个项目,数据库存放的是文件的路径,索引是对文件进行建立的,然后通过文件和数据库的相关记录进行关联的,要是直接对数据库一个字段建立索引的话也就可以用compass或者别的框架了,不知道说的对不,还是比较迷茫···
      

  3.   

    文件有目录么?
    产生肯定是有一定的规律的
    比如file.lastmodified()
    根据这个或类似的规律就可以判定哪些文件已经索引过,
    哪些没有索引过
      

  4.   

    文件是有规律 我让C++的人把文件名 和数据库的ID 统一 这样我就能直接关联数据库了
    问题是 我不知道怎么才能等到 索引里面 这个文件名最大的
    主要建立索引的时候 是乱序的,莫非按文件名排个倒序 ,我试试 
    还是谢谢你的 回复··
      

  5.   

    IndexWriter writer = new IndexWriter(directory, new IKAnalyzer(), false,
                            IndexWriter.MaxFieldLength.LIMITED);
    这个构造函数在Lucene3.1里面不提倡使用了,请问有没有其他的设置增量索引的方法?
    Lucene3.1的索引构造函数统一建议为: IndexWriter(Directory d, IndexWriterConfig conf) 
    然后在这个函数里就不知道要怎么设置了,是在IndexWriterConfig里设置么?怎么设?
      

  6.   

    IndexWriterConfig 里面定义了一个枚举
    public static enum OpenMode { CREATE, APPEND, CREATE_OR_APPEND }