tags:

views:

33

answers:

1

hello , i am using this function to update the index ..

    private static void insert_index(String url)throws Exception
{
 System.out.println(url);
    IndexWriter writer = new IndexWriter(
            FSDirectory.open(new File(INDEX_DIR)),
            new StandardAnalyzer(Version.LUCENE_CURRENT),
            true,
            IndexWriter.MaxFieldLength.UNLIMITED);
    Document doc;
    String field;
    String text;


    doc = new Document();

    field = "url";
    text = url;
    doc.add(new Field(field, text, Field.Store.YES, Field.Index.ANALYZED));



    field = "tags";
    text = "url";
    doc.add(new Field(field, text, Field.Store.YES, Field.Index.ANALYZED));

    writer.addDocument(doc);
    writer.commit();
    writer.close();



}

it index more urls and if i search the field with url it shows only the last indexed url....

+1  A: 

When creating a new index for the first time, the create parameter for the IndexWriter constructor has to be set to true. From then on it must be set to false, otherwise the previously saved index content is overridden. I'd change my code to detect index files before creating a new instance of IndexWriter.

This code can be used to workout if the index files exist

private bool IndexExists(string sIndexPath)
{
    return IndexReader.IndexExists(sIndexPath))
}

Then create the IndexWriter instance like this:

IndexWriter writer = new IndexWriter(
    FSDirectory.open(new File(INDEX_DIR)),
    new StandardAnalyzer(Version.LUCENE_CURRENT),
    IndexExists(INDEX_DIR) == false, // <-- This is what I mean
    IndexWriter.MaxFieldLength.UNLIMITED);
Am
thanks a lot mr.Am
Raja