You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by lingaraju <li...@infactindia.com> on 2004/07/26 11:37:55 UTC
updating the index created for database search
Dear All
I need help to update the index created for the database search
I created the index with three field mapping to the three column of database(oid(primarykey),title, contents)
Then I created the document for each row and added to the writer
doc.add(Field.Keyword("OID",oid+""));
doc.add(Field.Text("title",title));
doc.add(Field.Text("contents",contents));
writer.addDocument(doc);
Here search is only on title and the contents and oid is the key to retrieve the details from the database.
Later if the "contents" column in the database is updated. We have to updated the content in the index also
If I use the writer with false
IndexWriter writer = new IndexWriter("C\index", new StandardAnalyzer(),false);
then all the record are inserted in to index without deleting the old index causing duplication
If I use the writer with true
IndexWriter writer = new IndexWriter("C\index", new StandardAnalyzer(),false);
then record are inserted in to index deleting all the old index.
My question is
1) How to update the existing index
2) When I fetch the rows from the database in order to update or insert in index how to know which record is modified in database and which record is not present is index
Thanks is advance
Raju
Re: updating the index created for database search
Posted by lingaraju <li...@infactindia.com>.
I tried but I am missing some thing
Please can you tell me the syntax how to use the TermQuery to check the
presence of document in index from key field say OID
----- Original Message -----
From: "Daniel Naber" <da...@t-online.de>
To: "Lucene Users List" <lu...@jakarta.apache.org>
Sent: Monday, July 26, 2004 5:21 PM
Subject: Re: updating the index created for database search
> On Monday 26 July 2004 13:31, lingaraju wrote:
>
> > If it is new record through which class we have to check that record is
> > present in the index
>
> Just search for the id with a TermQuery. If you get a hit, the record is
in
> the index already.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: lucene-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: lucene-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: lucene-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: lucene-user-help@jakarta.apache.org
Re: updating the index created for database search
Posted by lingaraju <li...@infactindia.com>.
Dear Daniel
Thakns
Secod part is ok What about the first part I mean "how to know how many
records are modified"
Regards
Raju
----- Original Message -----
From: "Daniel Naber" <da...@t-online.de>
To: "Lucene Users List" <lu...@jakarta.apache.org>
Sent: Monday, July 26, 2004 5:21 PM
Subject: Re: updating the index created for database search
> On Monday 26 July 2004 13:31, lingaraju wrote:
>
> > If it is new record through which class we have to check that record is
> > present in the index
>
> Just search for the id with a TermQuery. If you get a hit, the record is
in
> the index already.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: lucene-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: lucene-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: lucene-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: lucene-user-help@jakarta.apache.org
Re: updating the index created for database search
Posted by Daniel Naber <da...@t-online.de>.
On Monday 26 July 2004 13:31, lingaraju wrote:
> If it is new record through which class we have to check that record is
> present in the index
Just search for the id with a TermQuery. If you get a hit, the record is in
the index already.
---------------------------------------------------------------------
To unsubscribe, e-mail: lucene-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: lucene-user-help@jakarta.apache.org
Re: updating the index created for database search
Posted by lingaraju <li...@infactindia.com>.
Dear Daniel
Thanks a lot.
I do have the last-modified column in my database.
But how to know how many records are modified.
If it is new record through which class we have to check that record is
present in the index
In the mean time I will look into IndexHTML in lucene demo
Regards
Raju
----- Original Message -----
From: "Daniel Naber" <da...@intrafind.de>
To: "Lucene Users List" <lu...@jakarta.apache.org>
Sent: Monday, July 26, 2004 3:35 PM
Subject: Re: updating the index created for database search
> On Monday 26 July 2004 11:37, lingaraju wrote:
>
> > 2) When I fetch the rows from the database in order to update or insert
in
> > index how to know which record is modified in database and which record
is
> > not present is index
>
> Your database will need a "last modified" column. Then you can select
those
> rows that have been modified since the last update and for each row check
if
> it's in the Lucene index. If it is, delete it there and re-add the new
> version. If it's not, add it. To delete documents you will probably need
to
> iterate over all your IDs in the Lucene index and check if they are still
in
> the database. If that's too inefficient you could check if you can do it
the
> way the file system indexer (IndexHTML in Lucene's demo) does it.
>
> BTW, please don't cross-post to both lists.
>
> Regards
> Daniel
>
> --
> Daniel Naber, IntraFind Software AG, Tel. 089-8906 9700
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: lucene-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: lucene-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: lucene-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: lucene-user-help@jakarta.apache.org
Re: updating the index created for database search
Posted by Daniel Naber <da...@intrafind.de>.
On Monday 26 July 2004 11:37, lingaraju wrote:
> 2) When I fetch the rows from the database in order to update or insert in
> index how to know which record is modified in database and which record is
> not present is index
Your database will need a "last modified" column. Then you can select those
rows that have been modified since the last update and for each row check if
it's in the Lucene index. If it is, delete it there and re-add the new
version. If it's not, add it. To delete documents you will probably need to
iterate over all your IDs in the Lucene index and check if they are still in
the database. If that's too inefficient you could check if you can do it the
way the file system indexer (IndexHTML in Lucene's demo) does it.
BTW, please don't cross-post to both lists.
Regards
Daniel
--
Daniel Naber, IntraFind Software AG, Tel. 089-8906 9700
---------------------------------------------------------------------
To unsubscribe, e-mail: lucene-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: lucene-user-help@jakarta.apache.org
Re: updating the index created for database search
Posted by Stephane James Vaucher <va...@cirano.qc.ca>.
Firstly, please do not double-post, other comments inline:
On Mon, 26 Jul 2004, lingaraju wrote:
> Dear All
>
> I need help to update the index created for the database search
>
> I created the index with three field mapping to the three column of database(oid(primarykey),title, contents)
> Then I created the document for each row and added to the writer
>
> doc.add(Field.Keyword("OID",oid+""));
> doc.add(Field.Text("title",title));
> doc.add(Field.Text("contents",contents));
> writer.addDocument(doc);
>
> Here search is only on title and the contents and oid is the key to retrieve the details from the database.
>
> Later if the "contents" column in the database is updated. We have to updated the content in the index also
>
> If I use the writer with false
>
> IndexWriter writer = new IndexWriter("C\index", new StandardAnalyzer(),false);
>
> then all the record are inserted in to index without deleting the old index causing duplication
It's a question of efficiency. The procedure for doing updates is
described here:
http://wiki.apache.org/jakarta-lucene/UpdatingAnIndex
In a nutshell, it's up to you to decide when a record is modified and
needs to be removed, then readded (there is no update)
> If I use the writer with true
>
> IndexWriter writer = new IndexWriter("C\index", new StandardAnalyzer(),false);
>
> then record are inserted in to index deleting all the old index.
>
> My question is
> 1) How to update the existing index
> 2) When I fetch the rows from the database in order to update or insert in index how to know which record is modified in database and which record is not present is index
>
> Thanks is advance
> Raju
>
sv
---------------------------------------------------------------------
To unsubscribe, e-mail: lucene-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: lucene-user-help@jakarta.apache.org