> I am wondering if in an integrated solution, things like sorting still > require the field cache? What if untokenized fields could be stored > in H2, normal tokenized fields in Lucene. Then somehow make the query > work properly. Yes the rowid would need to be stored. Currently > Lucene range queries are slower than SQL based btree queries. I am using an approach similar to field cache to maintain the association between Lucene DocId and Oracle rowid, this cache is automatically invalidated once an IndexWriter commit changes. > > Are you saying store the Lucene segments as BLOBs? Yep, I am using Oracle Secure Files (BLOB) to store Lucene segments, this is done using OJVMDirectory which handle the operations. As I set in my previous email BLOBs have similar performance as an NFS file system, obviously is not faster than native IO, but we compensate this little overhead eliminating the network transfer/marshalling when indexing databases information, remember that Oracle-Lucene integration is running in a same memory space than the data so it have local access. We can replace BLOB by any other fault tolerance, scalable storage (like HBase), but I don't know if it can be aligned to a database transaction. Best regards, Marcelo. > > On Mon, Sep 8, 2008 at 7:13 PM, Marcelo Ochoa <[EMAIL PROTECTED]> wrote: >> Hi: >> Integrating Lucene in a RDBMS has two separate concern: >> - Integrate it as index to receive notification when a row change >> and that the optimizer can choose a right execution plan based on the >> index statistics. >> - Replace Lucene file system store to align database changes with >> Lucene changes, it means both should be part of one transaction. >> For H2, first point seem to be viable of implement with more or less >> efforts, for the second I don't know how H2 manage BLOB storage. >> My experience with Oracle-Lucene Integration is that replacing the >> file-system store by BLOB do not impose a big overhead and we get >> rollback, replication and fault tolerance functionality for free :) >> Best regards, Marcelo. >> >> PD: Sure Lucene Index is small inside a database, we need to store as >> UN_TOKENIZED the rowid, for the content of the other indexes field the >> database has faster access than Lucene. >>> Cool. I mention H2 because it does have some Lucene code in it yes. >>> Also according to some benchmarks it's the fastest of the open source >>> databases. I think it's possible to integrate realtime search for H2. >>> I suppose there is no need to store the data in Lucene in this case? >>> One loses the multiple values per field Lucene offers, and the schema >>> become static. Perhaps it's a trade off? >>> >>> On Mon, Sep 8, 2008 at 6:17 PM, J. Delgado <[EMAIL PROTECTED]> wrote: >>>> Yes, both Marcelo and I would be interested. >>>> >>>> We looked into H2 and it looks like something similar to Oracle's ODCI can >>>> be implemented. Plus the primitive full-text implementación is based on >>>> Lucene. >>>> I say primitive because looking at the code I saw that one cannot define an >>>> Analyzer and for each scan corresponding to a where clause a searcher is >>>> open and closed, instead of having a pool, plus it does not have any way to >>>> queue changes to reduce the use of the IndexWriter, etc. >>>> >>>> But its open source and that is a great starting point! >>>> >>>> -- Joaquin >>>> >>>> On Mon, Sep 8, 2008 at 2:05 PM, Jason Rutherglen >>>> <[EMAIL PROTECTED]> wrote: >>>>> >>>>> Perhaps an interesting project would be to integrate Ocean with H2 >>>>> www.h2database.com to take advantage of both models. I'm not sure how >>>>> exactly that would work, but it seems like it would not be too >>>>> difficult. Perhaps this would solve being able to perform faster >>>>> hierarchical queries and perhaps other types of queries that Lucene is >>>>> not capable of. >>>>> >>>>> Is this something Joaquin you are interested in collaborating on? I >>>>> am definitely interested in it. >>>>> >>>>> On Sun, Sep 7, 2008 at 4:04 AM, J. Delgado <[EMAIL PROTECTED]> >>>>> wrote: >>>>> > On Sat, Sep 6, 2008 at 1:36 AM, Otis Gospodnetic >>>>> > <[EMAIL PROTECTED]> wrote: >>>>> >> >>>>> >> Regarding real-time search and Solr, my feeling is the focus should be >>>>> >> on >>>>> >> first adding real-time search to Lucene, and then we'll figure out how >>>>> >> to >>>>> >> incorporate that into Solr later. >>>>> > >>>>> > >>>>> > Otis, what do you mean exactly by "adding real-time search to Lucene"? >>>>> > Note >>>>> > that Lucene, being a indexing/search library (and not a full blown >>>>> > search >>>>> > engine), is by definition "real-time": once you add/write a document to >>>>> > the >>>>> > index it becomes immediately searchable and if a document is logically >>>>> > deleted and no longer returned in a search, though physical deletion >>>>> > happens >>>>> > during an index optimization. >>>>> > >>>>> > Now, the problem of adding/deleting documents in bulk, as part of a >>>>> > transaction and making these documents available for search immediately >>>>> > after the transaction is commited sounds more like a search engine >>>>> > problem >>>>> > (i.e. SOLR, Nutch, Ocean), specially if these transactions are known to >>>>> > be >>>>> > I/O expensive and thus are usually implemented bached proceeses with >>>>> > some >>>>> > kind of sync mechanism, which makes them non real-time. >>>>> > >>>>> > For example, in my previous life, I designed and help implement a >>>>> > quasi-realtime enterprise search engine using Lucene, having a set of >>>>> > multi-threaded indexers hitting a set of multiple indexes alocatted >>>>> > accross >>>>> > different search services which powered a broker based distributed >>>>> > search >>>>> > interface. The most recent documents provided to the indexers were >>>>> > always >>>>> > added to the smaller in-memory (RAM) indexes which usually could absorbe >>>>> > the >>>>> > load of a bulk "add" transaction and later would be merged into larger >>>>> > disk >>>>> > based indexes and then flushed to make them ready to absorbe new fresh >>>>> > docs. >>>>> > We even had further partitioning of the indexes that reflected time >>>>> > periods >>>>> > with caps on size for them to be merged into older more archive based >>>>> > indexes which were used less (yes the search engine default search was >>>>> > on >>>>> > data no more than 1 month old, though user could open the time window by >>>>> > including archives). >>>>> > >>>>> > As for SOLR and OCEAN, I would argue that these semi-structured search >>>>> > engines are becomming more and more like relational databases with >>>>> > full-text >>>>> > search capablities (without the benefit of full reletional algebra -- >>>>> > for >>>>> > example joins are not possible using SOLR). Notice that "real-time" CRUD >>>>> > operations and transactionality are core DB concepts adn have been >>>>> > studied >>>>> > and developed by database communities for aquite long time. There has >>>>> > been >>>>> > recent efforts on how to effeciently integrate Lucene into releational >>>>> > databases (see Lucene JVM ORACLE integration, see >>>>> > >>>>> > http://marceloochoa.blogspot.com/2007/09/running-lucene-inside-your-oracle-jvm.html) >>>>> > >>>>> > I think we should seriously look at joining efforts with open-source >>>>> > Database engine projects, written in Java (see >>>>> > http://java-source.net/open-source/database-engines) in order to blend >>>>> > IR >>>>> > and ORM for once and for all. >>>>> > >>>>> > -- Joaquin >>>>> > >>>>> > >>>>> >> >>>>> >> I've read Jason's Wiki as well. Actually, I had to read it a number of >>>>> >> times to understand bits and pieces of it. I have to admit there is >>>>> >> still >>>>> >> some fuzziness about the whole things in my head - is "Ocean" something >>>>> >> that >>>>> >> already works, a separate project on googlecode.com? I think so. If >>>>> >> so, >>>>> >> and if you are working on getting it integrated into Lucene, would it >>>>> >> make >>>>> >> it less confusing to just refer to it as "real-time search", so there >>>>> >> is no >>>>> >> confusion? >>>>> >> >>>>> >> If this is to be initially integrated into Lucene, why are things like >>>>> >> replication, crowding/field collapsing, locallucene, name service, tag >>>>> >> index, etc. all mentioned there on the Wiki and bundled with >>>>> >> description of >>>>> >> how real-time search works and is to be implemented? I suppose >>>>> >> mentioning >>>>> >> replication kind-of makes sense because the replication approach is >>>>> >> closely >>>>> >> tied to real-time search - all query nodes need to see index changes >>>>> >> fast. >>>>> >> But Lucene itself offers no replication mechanism, so maybe the >>>>> >> replication >>>>> >> is something to figure out separately, say on the Solr level, later on >>>>> >> "once >>>>> >> we get there". I think even just the essential real-time search >>>>> >> requires >>>>> >> substantial changes to Lucene (I remember seeing large patches in >>>>> >> JIRA), >>>>> >> which makes it hard to digest, understand, comment on, and ultimately >>>>> >> commit >>>>> >> (hence the luke warm response, I think). Bringing other non-essential >>>>> >> elements into discussion at the same time makes it more difficult t o >>>>> >> process all this new stuff, at least for me. Am I the only one who >>>>> >> finds >>>>> >> this hard? >>>>> >> >>>>> >> That said, it sounds like we have some discussion going (Karl...), so I >>>>> >> look forward to understanding more! :) >>>>> >> >>>>> >> >>>>> >> Otis >>>>> >> -- >>>>> >> Sematext -- http://sematext.com/ -- Lucene - Solr - Nutch >>>>> >> >>>>> >> >>>>> >> >>>>> >> ----- Original Message ---- >>>>> >> > From: Yonik Seeley <[EMAIL PROTECTED]> >>>>> >> > To: java-dev@lucene.apache.org >>>>> >> > Sent: Thursday, September 4, 2008 10:13:32 AM >>>>> >> > Subject: Re: Realtime Search for Social Networks Collaboration >>>>> >> > >>>>> >> > On Wed, Sep 3, 2008 at 6:50 PM, Jason Rutherglen >>>>> >> > wrote: >>>>> >> > > I also think it's got a >>>>> >> > > lot of things now which makes integration difficult to do properly. >>>>> >> > >>>>> >> > I agree, and that's why the major bump in version number rather than >>>>> >> > minor - we recognize that some features will need some amount of >>>>> >> > rearchitecture. >>>>> >> > >>>>> >> > > I think the problem with integration with SOLR is it was designed >>>>> >> > > with >>>>> >> > > a different problem set in mind than Ocean, originally the CNET >>>>> >> > > shopping application. >>>>> >> > >>>>> >> > That was the first use of Solr, but it actually existed before that >>>>> >> > w/o any defined use other than to be a "plan B" alternative to MySQL >>>>> >> > based search servers (that's actually where some of the parameter >>>>> >> > names come from... the default /select URL instead of /search, the >>>>> >> > "rows" parameter, etc). >>>>> >> > >>>>> >> > But you're right... some things like the replication strategy were >>>>> >> > designed (well, borrowed from Doug to be exact) with the idea that it >>>>> >> > would be OK to have slightly "stale" views of the data in the range >>>>> >> > of >>>>> >> > minutes. It just made things easier/possible at the time. But tons >>>>> >> > of Solr and Lucene users want almost instantaneous visibility of >>>>> >> > added >>>>> >> > documents, if they can get it. It's hardly restricted to social >>>>> >> > network applications. >>>>> >> > >>>>> >> > Bottom line is that Solr aims to be a general enterprise search >>>>> >> > platform, and getting as real-time as we can get, and as scalable as >>>>> >> > we can get are some of the top priorities going forward. >>>>> >> > >>>>> >> > -Yonik >>>>> >> > >>>>> >> > --------------------------------------------------------------------- >>>>> >> > 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] >>>>> >> >>>>> > >>>>> > >>>>> >>>>> --------------------------------------------------------------------- >>>>> 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] >>> >>> >> >> >> >> -- >> Marcelo F. Ochoa >> http://marceloochoa.blogspot.com/ >> http://marcelo.ochoa.googlepages.com/home >> ______________ >> Do you Know DBPrism? Look @ DB Prism's Web Site >> http://www.dbprism.com.ar/index.html >> More info? >> Chapter 17 of the book "Programming the Oracle Database using Java & >> Web Services" >> http://www.amazon.com/gp/product/1555583296/ >> Chapter 21 of the book "Professional XML Databases" - Wrox Press >> http://www.amazon.com/gp/product/1861003587/ >> Chapter 8 of the book "Oracle & Open Source" - O'Reilly >> http://www.oreilly.com/catalog/oracleopen/ >> >> --------------------------------------------------------------------- >> 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] > >
-- Marcelo F. Ochoa http://marceloochoa.blogspot.com/ http://marcelo.ochoa.googlepages.com/home ______________ Do you Know DBPrism? Look @ DB Prism's Web Site http://www.dbprism.com.ar/index.html More info? Chapter 17 of the book "Programming the Oracle Database using Java & Web Services" http://www.amazon.com/gp/product/1555583296/ Chapter 21 of the book "Professional XML Databases" - Wrox Press http://www.amazon.com/gp/product/1861003587/ Chapter 8 of the book "Oracle & Open Source" - O'Reilly http://www.oreilly.com/catalog/oracleopen/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]