Lucene working with a DB

2004-12-21 Thread Daniel Cortes
I read a lot of messages that Lucene can index a DB because it use that 
INPUTSTREAM type
I don't understand how to do this. For example if I've a forum with 
Mysql  and a lot of files on my web, for every search I've to select the 
index that I want use in my search, true? But I don't know how to do 
that Lucene writes an index about the information of the DB of forum 
(for example  MySQL)

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: Lucene working with a DB

2004-12-21 Thread Erik Hatcher
On Dec 21, 2004, at 10:39 AM, Daniel Cortes wrote:
I read a lot of messages that Lucene can index a DB because it use 
that INPUTSTREAM type
Where have you read that?  This is incorrect.
I don't understand how to do this. For example if I've a forum with 
Mysql  and a lot of files on my web, for every search I've to select 
the index that I want use in my search, true? But I don't know how to 
do that Lucene writes an index about the information of the DB of 
forum (for example  MySQL)
To index data in a database into a Lucene index, you must write code 
that pulls the records from the database and adds them to a Lucene 
index, slicing into fields in whatever manner you need.  You will want 
to be sure to update the index when your database changes by either 
removing, or updating (remove and re-add) documents.  There is 
nothing built-in that will do these steps for you.

Erik
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: Lucene working with a DB

2004-12-21 Thread [EMAIL PROTECTED]
Hello
I'll just paste the relevant MySQL code, you add the calls to it per 
your needs..it has no checking of anything so better add that as well...
It's possible I didnt copy/paste everything but you should get the idea 
where this is going...

-pedja
--

import java.sql.*;
import lucene stuff...

public class  sqlTest {
 public static void main(String[] args) throws Exception {
   String sTable  = args[0];
   String sThing = args[1];
   String indexDir = /path/to/lucene/index;
 try {
   Analyzer analyzer   = new StandardAnalyzer();
   IndexWriter fsWriter  = new IndexWriter(indexDir, analyzer, false);
   addSQLDoc(fsWriter, sTable, sThing);
   fsWriter.close();
 } catch (Exception e) {
   throw new Exception( caught a  + e.getClass() + \n with 
message:  + e.getMessage());
 }
}

private void addSQLDoc(IndexWriter writer, String sqlTable, String 
somethingElse) throws Exception {

   String cs = 
jdbc:mysql://HOST/DATABASE?user=SQLUSERpassword=SQLPASSWORD;
   String sql= SELECT * FROM  + sqlTable +  WHERE 
something=\ + somethingElse + \;

   // establish a connection to MySQL database
   try {
   Class.forName(com.mysql.jdbc.Driver).newInstance();
   } catch (Exception e) {
   System.out.println(Lucene: ERROR: Unable to load driver);
   e.printStackTrace();
   }
   // get the record data...
   try {
  Connection conn = DriverManager.getConnection(cs);
  Statement Stmt = conn.createStatement();
  ResultSet RS = Stmt.executeQuery(sql);
  while(RS.next()) {
 // make a new, empty document
 Document doc = new Document();
 // get the database fields
 String field2 = RS.getString(1);
 String field2 = RS.getString(2);
 String field3 = RS.getString(3);
 String field4 = RS.getString(4);
 String field5 = RS.getString(5);
 // add the first group of fields
 //
 doc.add(Field.Keyword(FIELD1, field1));
 doc.add(Field.Keyword(FIELD2, field2));
 doc.add(Field.Keyword(FIELD3, field3));
 doc.add(Field.Keyword(FIELD4, field4));
 doc.add(Field.Text(FIELD5, field5));
 // add the document
 writer.addDocument(doc);
   } catch (Exception e) {
   e.printStackTrace();
   throw new Exception();
   }
  } // close while(..)
  RS.close();
  Stmt.close();
  conn.close();
   } catch(SQLException e) {
   throw new Exception();
   }
 }
}
--
Daniel Cortes said the following on 12/21/2004 10:39 AM:
I read a lot of messages that Lucene can index a DB because it use 
that INPUTSTREAM type
I don't understand how to do this. For example if I've a forum with 
Mysql  and a lot of files on my web, for every search I've to select 
the index that I want use in my search, true? But I don't know how to 
do that Lucene writes an index about the information of the DB of 
forum (for example  MySQL)

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]