2

My index is being created sucessfully. My problem is that when trying the read it in Luke, I am getting an error:

Caused by: java.io.IOException: read past EOF

I am aware that Lucene does provide an option to not store a Field. However, what would be the best way to go about this?

  • Store the field regardless of the size, and if a hit is found for a search, fetch the appropriate Field from Document OR
  • Don't store the Field and if a hit is found for a search, query the data base to get the relevant information out?

Here is the code used to create the index:

public class CREATEiNDEX {
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
        Directory index = FSDirectory.open(new File("C:/toturials/luceneindex/"));
        IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43, analyzer);
        IndexWriter w = new IndexWriter(index, config);
        List <String>list=readingPersonFile();

        for (int i = 0; i < list.size(); i++)
        {
            addDoc(w, String.valueOf(i),list.get(i));
        }
        w.close();
    }

    private static void addDoc(IndexWriter w, String title, String isbn) throws IOException {
        Document doc = new Document();
        doc.add(new StringField("Id", title, Field.Store.YES));
        doc.add(new TextField("Name", isbn, Field.Store.YES));
        w.addDocument(doc);
    }
4

1 に答える 1

0

インデックスを削除した後、新しいインデックスを作成する必要があると思います。

于 2013-06-15T16:57:05.847 に答える