You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Vinicius Carvalho <vi...@gmail.com> on 2008/03/19 23:21:25 UTC

[noobie question] Can't index :(

Hello there! This is really a dumb question, but I just need to get things
started :( I'm just trying to get things working here, and I'm not being
able to index :(. Here's my code:

public abstract class AbstractLuceneIndexer implements LuceneIndexer{

    protected String INDEX_DIR = "";


    public void add(Document document) {
        try {
            if(!IndexReader.isLocked(INDEX_DIR)){
                getIndexWriter().setMaxFieldLength(Integer.MAX_VALUE);
                getIndexWriter().addDocument(document);
                optimize();
                System.out.println(getIndexWriter().docCount());
                getIndexWriter().close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void delete(Document document) {
        try {
            if(!IndexReader.isLocked(INDEX_DIR)){
                getIndexReader().deleteDocument(findDocumentNum(document));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private int findDocumentNum(Document doc){
        return 0;
    }

    public void optimize() {

    }

    public Hits query() {
        return null;
    }

    protected abstract IndexWriter getIndexWriter();

    protected abstract IndexReader getIndexReader();

    protected abstract Analyzer getAnalyzer();


}

public class LocalLuceneIndexer extends AbstractLuceneIndexer {
    private Directory dir;
    public LocalLuceneIndexer() {
        INDEX_DIR = "/java/lucene/index";
        try {
            this.dir = FSDirectory.getDirectory(INDEX_DIR);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Override
    protected IndexReader getIndexReader() {
        IndexReader reader = null;
        try {
            reader = IndexReader.open(dir);
        } catch (CorruptIndexException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return reader;
    }

    @Override
    protected IndexWriter getIndexWriter() {
        IndexWriter writer = null;
        try {
            writer = new IndexWriter(INDEX_DIR,new StandardAnalyzer(),true);
        } catch (CorruptIndexException e) {
            e.printStackTrace();
        } catch (LockObtainFailedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return writer;
    }

    @Override
    protected Analyzer getAnalyzer() {
        return new StandardAnalyzer();
    }

}

@Test
    public void testAddPDF() throws Exception{
        LocalLuceneIndexer indexer = new LocalLuceneIndexer();
        DocumentHandler handler = new PDFDocumentHandler();
        File file = new File("/home/vinicius/samplePDF.pdf");
        FileInputStream fin = new FileInputStream(file);
        Document doc = handler.getDocument(fin);
        indexer.add(doc);
      }

Well, after running the test above, I have only 2 files stored at disk :
segments.gen and segments_5. Luke can not open the index dir. What am I
missing here?

Regards

-- 
"In a world without fences and walls, who needs Gates and Windows?"

Re: [noobie question] Can't index :(

Posted by Vinicius Carvalho <vi...@gmail.com>.
Doh!!!! Sorry, never mind, returning different indexWriter instances :P

On Wed, Mar 19, 2008 at 7:21 PM, Vinicius Carvalho <
viniciusccarvalho@gmail.com> wrote:

> Hello there! This is really a dumb question, but I just need to get things
> started :( I'm just trying to get things working here, and I'm not being
> able to index :(. Here's my code:
>
> public abstract class AbstractLuceneIndexer implements LuceneIndexer{
>
>     protected String INDEX_DIR = "";
>
>
>     public void add(Document document) {
>         try {
>             if(!IndexReader.isLocked(INDEX_DIR)){
>                 getIndexWriter().setMaxFieldLength(Integer.MAX_VALUE);
>                 getIndexWriter().addDocument(document);
>                 optimize();
>                 System.out.println(getIndexWriter().docCount());
>                 getIndexWriter().close();
>             }
>         } catch (IOException e) {
>             e.printStackTrace();
>         }
>     }
>
>     public void delete(Document document) {
>         try {
>             if(!IndexReader.isLocked(INDEX_DIR)){
>
> getIndexReader().deleteDocument(findDocumentNum(document));
>             }
>         } catch (IOException e) {
>             e.printStackTrace();
>         }
>     }
>
>     private int findDocumentNum(Document doc){
>         return 0;
>     }
>
>     public void optimize() {
>
>     }
>
>     public Hits query() {
>         return null;
>     }
>
>     protected abstract IndexWriter getIndexWriter();
>
>     protected abstract IndexReader getIndexReader();
>
>     protected abstract Analyzer getAnalyzer();
>
>
> }
>
> public class LocalLuceneIndexer extends AbstractLuceneIndexer {
>     private Directory dir;
>     public LocalLuceneIndexer() {
>         INDEX_DIR = "/java/lucene/index";
>         try {
>             this.dir = FSDirectory.getDirectory(INDEX_DIR);
>
>         } catch (IOException e) {
>             e.printStackTrace();
>         }
>     }
>     @Override
>     protected IndexReader getIndexReader() {
>         IndexReader reader = null;
>         try {
>             reader = IndexReader.open(dir);
>         } catch (CorruptIndexException e) {
>             e.printStackTrace();
>         } catch (IOException e) {
>             e.printStackTrace();
>         }
>         return reader;
>     }
>
>     @Override
>     protected IndexWriter getIndexWriter() {
>         IndexWriter writer = null;
>         try {
>             writer = new IndexWriter(INDEX_DIR,new
> StandardAnalyzer(),true);
>         } catch (CorruptIndexException e) {
>             e.printStackTrace();
>         } catch (LockObtainFailedException e) {
>             e.printStackTrace();
>         } catch (IOException e) {
>             e.printStackTrace();
>         }
>         return writer;
>     }
>
>     @Override
>     protected Analyzer getAnalyzer() {
>         return new StandardAnalyzer();
>     }
>
> }
>
> @Test
>     public void testAddPDF() throws Exception{
>         LocalLuceneIndexer indexer = new LocalLuceneIndexer();
>         DocumentHandler handler = new PDFDocumentHandler();
>         File file = new File("/home/vinicius/samplePDF.pdf");
>         FileInputStream fin = new FileInputStream(file);
>         Document doc = handler.getDocument(fin);
>         indexer.add(doc);
>       }
>
> Well, after running the test above, I have only 2 files stored at disk :
> segments.gen and segments_5. Luke can not open the index dir. What am I
> missing here?
>
> Regards
>
> --
> "In a world without fences and walls, who needs Gates and Windows?"




-- 
"In a world without fences and walls, who needs Gates and Windows?"