[Xapian-discuss] how can i search and add document at same time

ouwind ouwind at 163.com
Wed Sep 9 10:06:15 BST 2009


sorry. i mean i has two threads, one thread is adding document to the xapian database. another threads is searching the database.both use m_indexdb.(Xapian::WritableDatabase* m_indexdb;). so it will have exception


------------------
ouwind
2009-9-9

On Wed, Sep 09, 2009 at 02:12:18PM +0800, ouwind wrote:

> i know use flush to insert a document. but how can i search document
> when i call add_document and bettween. i mean not the document i am
> adding but the document already existed in database. for when i
> add_document, it will write database, so when i search database at
> this time, it will corrupt

If I understand what you're asking, then you want:

 * to search the database for documents previous to the one you've
   just added, from the process adding documents (the index process)

I don't know what you mean by "it will corrupt"; it certainly
shouldn't corrupt the database in any way if you do this (if it does,
then it's a bug). However if you simply mean that it may include the
document just added, then you could avoid this by composing your query
using OP_AND_NOT with a second query, which is a unique term
identifying the document just added (or if more than one, a query
OP_OR over the unique terms).

If you're following the omega term prefix convention, you'll probably
have a unique term starting with 'Q'. (If you are using the term
prefix convention but aren't generating unique terms, then it's
probably a good idea to start now, because it turns out very helpful
in a lot of cases.)

J

-- 
  James Aylett

  talktorex.co.uk - xapian.org - uncertaintydivision.org

_______________________________________________
Xapian-discuss mailing list
Xapian-discuss at lists.xapian.org
http://lists.xapian.org/mailman/listinfo/xapian-discuss
     




More information about the Xapian-discuss mailing list