You could certainly subclass org.apache.lucene.store.Directory to create a new concrete class that stored the data in a dbms; in fact, the Javadoc for Directory specifically mentions that as a possibility. You could, for example, map "files" in JDBCDirectory (a hypothetical class) to a table in the dbms with a text field for the name of the "file" and a BLOB as the content (you probably need a modification timestamp field, too). I didn't end up doing it, but it does not look particularly difficult.

On 22 Sep 2005, at 13:54, Fernando Luiz Engelmann Junior wrote:

I have a portal application, installed on the server. I want to store the index in the dbms, cause all the data would be centralized in just one place(Oracle or mysql for example). So when i need to do a backup, or move my site to another server, the impact would be smaller then if i have the index in one place (filesystem) and data on another(dbms). Besides, my point of view is, if i could store all the information in the dbms, i wont be have any headache with security roles or something like that.



Christophe wrote:


Hi,

(First time poster!)

I considered that when working on my application, but I couldn't figure out a reason that it would be an advantage over plain flat files. The only possible advantage I could see was distribution (you could update the index in one place and have all the dbms clients get copies), but I decided to solve that with an RMI solution (a la Lucene in Action's examples). What kind of functionality were you looking to gain from storing the indexes in the dbms?

On 22 Sep 2005, at 12:33, Fernando Luiz Engelmann Junior wrote:


Does anyone have created the index and stored it on a database? I have an application that uses jdbc, and i´m thinking if it´s possible to store the indexes of lucene in this database. If someone of you guys could help me, i appreciate....


Erik Hatcher wrote:



Arpit - as was said below, the code is available from the Lucene in Action website (URL also below).

    Erik


On Sep 22, 2005, at 2:47 PM, Arpit Sharma wrote:



Hi erik and others,

Can you provide me the full code for Indexer program.
Will really appreciate it.

THanks alot.

--- Erik Hatcher <[EMAIL PROTECTED]> wrote:




Arpit,

It looks like you've omitted the import statements
from
Indexer.java.  The book omits import statements to
conserve space,
but they are important.  The code is provided in its
entirety at
http://www.lucenebook.com

In fact, you could build an index by running the
code directly (read
the README file and follow the instructions first)
by typing "ant
Indexer" and following the prompts.  One of the
prompts asks you
where to put the index itself, and the next prompt
asks for the
directory of text files to index.

     Erik



On Sep 19, 2005, at 10:34 PM, Arpit Sharma wrote:




I have put the .jar file in C:\lucene and I have



also



unzip it and have also put all the



directories(like



analysis,index,store) in C:\ lucene.

Now how to create a index ?
all the text files are in C:\text directory. I



have



"lucene in action" book and with the help of it I



made



a  Indexer.java program in C:\lucene and when I



tried



to compile it it is giving lot's of errors.
The code is fine(it is copy paste from the book).

I am sure that there is some path problem. What



should



I do ?

Thanks

Here is the code of the Indexer.java:-
----------------

/** * This code was originally written for
 **   Erik's Lucene intro java.net article */

public class Indexer {

   public static void main(String[] args) throws
Exception {

       if (args.length != 2) {
           throw new Exception("Usage: java " +
Indexer.class.getName()
           + " <index dir> <data dir>");
       }

       File indexDir = new File(args[0]);
       File dataDir = new File(args[1]);

       long start = new Date().getTime();
       int numIndexed = index(indexDir, dataDir);
       long end = new Date().getTime();

       System.out.println("Indexing " + numIndexed



+ "



files took "
       + (end - start) + " milliseconds");

  }

  // open an index and start file directory



traversal





  public static int index(File indexDir, File



dataDir)




      throws IOException {
          if (!dataDir.exists() ||



!dataDir.isDirectory()) {




              throw new IOException(dataDir
              + " does not exist or is not a



directory");



          }

          IndexWriter writer = new



IndexWriter(indexDir,




          new StandardAnalyzer(), true);
          writer.setUseCompoundFile(false);

          indexDirectory(writer, dataDir);

          int numIndexed = writer.docCount();

         writer.optimize();
         writer.close();

         return numIndexed;
     }

     // recursive method that calls itself when it



finds



a directory

     private static void



indexDirectory(IndexWriter



writer, File dir)
         throws IOException {

         File[] files = dir.listFiles();
         for (int i = 0; i < files.length; i++) {
             File f = files[i];
             if (f.isDirectory()) {
                 indexDirectory(writer, f);
             } else if



(f.getName().endsWith(".txt")) {




               indexFile(writer, f);
             }
           }
     }

     // method to actually index a file using



Lucene




     private static void indexFile(IndexWriter



writer,



File f)
        throws IOException {

        if (f.isHidden() || !f.exists() ||



!f.canRead())



{
                return;
        }

        System.out.println("Indexing " +
f.getCanonicalPath());

        Document doc = new Document();
        doc.add(Field.Text("contents", new
FileReader(f)));

        doc.add(Field.Keyword("filename",
f.getCanonicalPath()));
        writer.addDocument(doc);
        }
      }

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam



protection around



http://mail.yahoo.com











__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
http://mail.yahoo.com















Reply via email to