16

I am new to Java and Lucene. My code gets a line from a file and stores it in Lucene Index. But when I create an IndexReader to search and read from the index it throws an exception.

My java code is below. On creating the IndexReader it throws an IndexNotFoundException

static String itemsfreq[];
static StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);
static IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35, analyzer);

public static void index_data(Directory indexed_document,int doc_num,IndexWriter w) throws IOException
    {
    for(int i = 0;i < itemsfreq.length;i++)
        {
        Document doc = new Document();
        doc.add(new Field(Integer.toString(doc_num)+","+itemsfreq[i],itemsfreq[i++], Field.Store.YES, Field.Index.ANALYZED));
        w.addDocument(doc);
        }
    }
//Gets string from a file and insert it in INDEX named indexed_document
public static void main(String[] args) throws IOException
    {
    BufferedReader reader = new BufferedReader(new FileReader("fullText100.txt"));
    String line;
    int i = 0;
    Directory indexed_document = new RAMDirectory();
    IndexWriter writer = new IndexWriter(indexed_document, config);
    while((line=reader.readLine()) != null)
        {
        if(i == 1)
            {
            break;
            }
        itemsfreq = line.split(" ");
        index_data(indexed_document,i,writer);
        i++;
        }

    IndexReader r = IndexReader.open(indexed_document);
    } 
4

4 に答える 4

29

リーダーを使用してインデックスを開く前に、一度呼び出しますwriter.commit()

于 2013-04-25T11:47:49.140 に答える
19

変更をインデックスに書き込むには、インデックス ライターを閉じてから、IndexReader を開く必要があります。

writer.close();

書き込みが完了する前に IndexReader を開く必要がある場合は、変更を確認するためにインデックスを再度開くように IndexReader に指示する必要があります。

于 2012-05-05T10:16:25.430 に答える