Hi

I am not sure exactly what LUCENE-5675 does, but reading the description it seems to me that it would help finding out that there is no document (having an id-field) where version-field is less than <some-version>. As far as I can see this will not help finding out if a document with id=<some-id> exists. We want to ask "does a document with id <some-id> exist", without knowing the value of its version-field (if it actually exists). You do not know if it ever existed, either.

Please elaborate. Thanks!

Regarding " The only other choice today is bloom filters, which use up huge amounts of memory", I guess a bloom filter only takes as much space (disk or memory) as you want it to. The more space you allow it to use the more it gives you a false positive (saying "this doc might exist" in cases where the doc actually does not exist). So the space you need to use for the bloom filter depends on how frequently you can live with false positives (where you have to actually look it up in the real index).

Regards, Per Steffensen

On 30/07/14 10:05, Shalin Shekhar Mangar wrote:
Hi Per,

There's LUCENE-5675 which has added a new postings format for IDs. Trying
it out in Solr is in my todo list but maybe you can get to it before me.

https://issues.apache.org/jira/browse/LUCENE-5675


On Wed, Jul 30, 2014 at 12:57 PM, Per Steffensen <st...@designware.dk>
wrote:

On 30/07/14 08:55, jim ferenczi wrote:

Hi Per,
First of all the BloomFilter implementation in Lucene is not exactly a
bloom filter. It uses only one hash function and you cannot set the false
positive ratio beforehand. ElasticSearch has its own bloom filter
implementation (using "guava like" BloomFilter), you should take a look at
their implementation if you really need this feature.

Yes, I am looking into what Lucene can do and how to use it through Solr.
If it does not fit our needs I will enhance it - potentially with
inspiration from ES implementation. Thanks

  What is your use-case ? If your index fits in RAM the bloom filter won't
help (and it may have a negative impact if you have a lot of segments). In
fact the only use case where the bloom filter can help is when your term
dictionary does not fit in RAM which is rarely the case.

We have so many documents that it will never fit in memory. We use
optimistic locking (our own implementation) to do correct concurrent
assembly of documents and to do duplicate control. This require a lot of
finding docs from their id, and most of the time the document is not there,
but to be sure we need to check both transactionlog and the actual index
(UpdateLog). We would like to use Bloom Filter to quickly tell that a
document with a particular id is NOT present.

Regards,
Jim

Regards, Per Steffensen




Reply via email to