lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hasan Diwan <ha...@quantum4d.com>
Subject How to create segments files?
Date Fri, 07 Mar 2008 03:16:11 GMT
Ladies and Gentlemen:
Below is an exception and the source code that generates it:
ERROR opening the Index - contact sysadmin!

Error message: no segments* file found in 
org.apache.lucene.store.FSDirectory@/home/hdiwan/public_html/Q4D: files:

Stack Trace follows...
org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:587)
org.apache.lucene.index.DirectoryIndexReader.open(DirectoryIndexReader.java:63)
org.apache.lucene.index.IndexReader.open(IndexReader.java:209)
org.apache.lucene.index.IndexReader.open(IndexReader.java:173)
org.apache.lucene.search.IndexSearcher.(IndexSearcher.java:48)
org.apache.jsp.results_jsp._jspService(results_jsp.java:130)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)

-- Source code follows --
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.Vector;
import org.apache.lucene.analysis.WhitespaceAnalyzer;
import org.apache.lucene.document.DateTools;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.FSDirectory;
public class Parser implements Runnable,Comparator {
            String path;
            public Parser(String string) {
                     path = string;
             }
             public void run() {
                     IndexWriter writer = null;
                     Directory directory = null;
                     try {
                          directory = FSDirectory.getDirectory(this.path);
                     } catch (IOException e) {
                         System.err.println(e.getStackTrace());
                     }
                     try {
                         writer = new IndexWriter(directory,new 
WhitespaceAnalyzer(), true);
                     } catch (CorruptIndexException e) {
                             e.printStackTrace();
                     } catch (LockObtainFailedException e) {
                             e.printStackTrace();
                     } catch (IOException e) {
                             e.printStackTrace();
                     }
                     Document doc = new Document();
                     File image = null;
                     File file = null;
                     for (File f : this.listFiles(new File(path))) {
                             if (f.getAbsolutePath().endsWith("xml") || 
f.getAbsolutePath().endsWith("q4d")) {
                                     System.err.println("Q4D file found!");
                                     file = f;
                             } else {
                                     image = f;
                             }
                             if ((f != null) && (image != null)) break;
                     }
                     Date lastModified = new Date(file.lastModified());
                     System.err.println("Found a file and its 
corresponding image!");
                     String imageName = image.getName();
                     String filename = file.getName();
                     String lastModifiedDownToSecond = 
DateTools.dateToString(lastModified, DateTools.Resolution.SECOND);
                     System.err.println("the time the file was last 
modified was "+lastModifiedDownToSecond);
                     String author = System.getProperty("author");
                        String source = System.getProperty("source");
                     String url = System.getProperty("url");
                     String description = 
URLDecoder.decode(System.getProperty("description", "UTF-8"));
             System.err.println("about to create fields");
                     doc.add(new Field("author", author, 
Field.Store.YES, Field.Index.TOKENIZED));
                     doc.add(new Field("source", source, 
Field.Store.YES, Field.Index.TOKENIZED));
                     doc.add(new Field("name", filename, 
Field.Store.YES, Field.Index.NO));
                     doc.add(new Field("image", imageName, 
Field.Store.YES, Field.Index.NO));
                     doc.add(new Field("date", lastModifiedDownToSecond, 
Field.Store.YES, Field.Index.NO));
                     doc.add(new Field("url", url, Field.Store.YES, 
Field.Index.NO));
                     if (description != null) {
                         doc.add(new Field("description", description, 
Field.Store.YES, Field.Index.TOKENIZED));
                     } else {
                         doc.add(new Field("description", "none", 
Field.Store.YES, Field.Index.TOKENIZED));
                     }
                     doc.add(new Field("all", 
author+lastModifiedDownToSecond+source+imageName+description+url, 
Field.Store.YES, Field.Index.TOKENIZED));
                     try {
                             writer.addDocument(doc);
                     } catch (CorruptIndexException e) {
                             e.printStackTrace();
                     } catch (IOException e) {
                             e.printStackTrace();
                     }
                     try {
                             writer.optimize();
                     } catch (CorruptIndexException e) {
                             e.printStackTrace();
                     } catch (IOException e) {
                             e.printStackTrace();
                     }
             }
           
             private Collection<File> listFiles(
                             File directory)
             {
                     Vector<File> files = new Vector<File>();
                     // Get files / directories in the directory
                     File[] entries = directory.listFiles();
    
                     // Go over entries
                     for (File entry : entries)
                     {
                             files.add(entry);
                     }
    
                     // Return collection of files, sorted by date
                     Collections.sort(files, this);
                     for (File entry : files) {
                             System.err.println(entry+" 
"+entry.lastModified());
                     }
                     return files;
             }
           
             public int compare(Object o1, Object o2) {
                     File f1 = (File)o1;
                     File f2 = (File)o2;
                     Date d1 = new Date(f1.lastModified());
                     Date d2 = new Date(f2.lastModified());
                     return d1.compareTo(d2);
             }
           
             public static void main (String []args) {
                     Parser obj = new Parser(args[0]);
                     try {
                            obj.run();
                     } finally { // in case it crashes, I don't want a 
locked repository!
                             File f = new 
File(args[0]+File.separator+"write.lock");
                             f.delete();
                     }
             }
     }
== end ==
The code is supposed to add a document to the repository, as you can see 
from the first 19 lines, it generates an exception, the backtrace is 
also included. I've been struggling with this problem all day today 
(Thursday) without making headway. Hence, I turn to your good guidance. 
I'm sure you won't disappoint. Many thanks! -- H

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message