<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>BloomFilter</title><link>http://bloomfilter.codeplex.com/project/feeds/rss</link><description></description><item><title>Reviewed: 1.0 Production (Jan 30, 2013)</title><link>http://bloomfilter.codeplex.com/releases/view/25930#ReviewBy-youngcoder</link><description>Rated 5 Stars &amp;#40;out of 5&amp;#41; - thank you very much&amp;#33;</description><author>youngcoder</author><pubDate>Thu, 31 Jan 2013 01:17:17 GMT</pubDate><guid isPermaLink="false">Reviewed: 1.0 Production (Jan 30, 2013) 20130131011717A</guid></item><item><title>Created Issue: Invalid constructor [23487]</title><link>http://bloomfilter.codeplex.com/workitem/23487</link><description>Now&amp;#58;&lt;br /&gt;public Filter&amp;#40;int capacity, int errorRate&amp;#41;&lt;br /&gt;&lt;br /&gt;Have to be&amp;#58;&lt;br /&gt;public Filter&amp;#40;int capacity, float errorRate&amp;#41;&lt;br /&gt;</description><author>vjevdokimov</author><pubDate>Thu, 11 Oct 2012 09:50:21 GMT</pubDate><guid isPermaLink="false">Created Issue: Invalid constructor [23487] 20121011095021A</guid></item><item><title>Source code checked in, #69709</title><link>http://bloomfilter.codeplex.com/SourceControl/changeset/changes/69709</link><description>Upgrade&amp;#58; New Version of LabDefaultTemplate.xaml. To upgrade your build definitions, please visit the following link&amp;#58; http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkId&amp;#61;254563</description><author>Project Collection Service Accounts</author><pubDate>Mon, 01 Oct 2012 22:10:56 GMT</pubDate><guid isPermaLink="false">Source code checked in, #69709 20121001101056P</guid></item><item><title>Source code checked in, #69708</title><link>http://bloomfilter.codeplex.com/SourceControl/changeset/changes/69708</link><description>Checked in by server upgrade</description><author>Project Collection Service Accounts</author><pubDate>Mon, 01 Oct 2012 22:06:45 GMT</pubDate><guid isPermaLink="false">Source code checked in, #69708 20121001100645P</guid></item><item><title>New Post: Invalid casting in hashInt32</title><link>http://bloomfilter.codeplex.com/discussions/361612</link><description>&lt;div style="line-height: normal;"&gt;
&lt;div id="_mcePaste" style="width:1px; height:1px; overflow:hidden; top:0px; left:-10000px"&gt;
&amp;#65279;&lt;/div&gt;
&lt;p&gt;In the function &lt;span style="text-decoration:underline"&gt;hashInt32&lt;/span&gt; the input is safe-cast to a Nullable&amp;lt;UInt32&amp;gt; with disasterous effects: no Int32 can be hashed as the input, &amp;quot;x&amp;quot;, remains null.&lt;/p&gt;
&lt;p&gt;The only alternative I can see is to box the &amp;quot;T&amp;quot; input via Convert.ToUInt32 or to make an Int32 specific filter to avoid boxing.&lt;/p&gt;
&lt;/div&gt;</description><author>codekaizen</author><pubDate>Sun, 01 Jul 2012 22:55:02 GMT</pubDate><guid isPermaLink="false">New Post: Invalid casting in hashInt32 20120701105502P</guid></item><item><title>Source code checked in, #60451</title><link>http://bloomfilter.codeplex.com/SourceControl/changeset/changes/60451</link><description>Upgrading solution to VS2010. Fixing typo in readme. </description><author>fatcat1111</author><pubDate>Mon, 02 May 2011 20:05:26 GMT</pubDate><guid isPermaLink="false">Source code checked in, #60451 20110502080526P</guid></item><item><title>Updated Wiki: Home</title><link>http://bloomfilter.codeplex.com/wikipage?version=5</link><description>&lt;div class="wikidoc"&gt;A  Bloom filter is a data structure optimized for fast, space-efficient set membership tests. Bloom filters have the unusual property of requiring constant time to add an element to the set or test for membership, regardless of the size of the elements or the number of elements already in the set. No other constant-space set data structure has this property. &lt;br /&gt;&lt;br /&gt;It works by storing a bit vector representing the set S&amp;#39; = {h[i](x) | x in S, i = 1, …, k}, where h[1], …, h[k] := {0, 1} -&amp;gt; [n lg(1/ε) lg e] are hash functions. Additions are simply setting k bits to 1, specifically those at h[1](x), …, h[k](x). Checks are implemented by performing those same hash functions and returning true if all of the resulting positions are 1. &lt;br /&gt;&lt;br /&gt;Because the set stored is a proper superset of the set of items added, false positives may occur, though false negatives cannot. The false positive rate can be specified. &lt;br /&gt;&lt;br /&gt;Bloom filters offer the following advantages:
&lt;ul&gt;&lt;li&gt;Space: Approximately n * lg(1/ε), where ε is the false positive rate and n is the number of elements in the set. 
&lt;ul&gt;&lt;li&gt;Example: There are approximately 170k words in the English language. If we consider that to be our set (therefore n = 1.7E5), and we wish to search a corpus for them with a 1% false positive rate, the filter would require about (1.7E5 * lg(1 / 0.01)) ≈ 162 KB. Contrast this with a hashtable, which would require (1.7E5 elements * 32 bits per element) ≈ 664 KB. Obviously explicit string storage would be significantly more. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Precision: Arbitrary precision, where increasing precision requires more space (following the above size equation) but not more time. 
&lt;ul&gt;&lt;li&gt;Example: If we wanted to reduce our false positive rate in the above example from one percent to one permille the space requirement would go from about 162 KB to about 207 KB. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Time: O(k) where k is the number of hash functions. The optimal number of hash functions (though a different number can  be supplied by the user if desired) is ceiling(lg(1/ε))
&lt;ul&gt;&lt;li&gt;Example: In keeping with our above example, if the accepted false positive rate is 0.001, k = 10. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;This implementation uses Dillinger &amp;amp; Manolios double hashing to provide all but the first two hash functions. By default the first hash function is the type&amp;#39;s GetHashCode() method. This implementation also includes default secondary hash functions for strings (Jenkin&amp;#39;s &amp;quot;One at a time&amp;quot; method) and integers (Wang&amp;#39;s method). &lt;br /&gt;&lt;br /&gt;Bloom filters are due to Burton H. Bloom, as described in the Communications of the ACM in July 1970. The full paper is available here: &lt;a href="http://portal.acm.org/citation.cfm?doid=362686.362692" class="externalLink"&gt;http://portal.acm.org/citation.cfm?doid=362686.362692&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. &lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>fatcat1111</author><pubDate>Mon, 02 May 2011 19:35:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110502073538P</guid></item><item><title>Reviewed: 1.0 Production (十月 23, 2010)</title><link>http://bloomfilter.codeplex.com/releases/view/25930#ReviewBy-lxw2012</link><description>Rated 4 Stars &amp;#40;out of 5&amp;#41; - I need a bloom filter ,thanks for your release</description><author>lxw2012</author><pubDate>Sun, 24 Oct 2010 02:26:48 GMT</pubDate><guid isPermaLink="false">Reviewed: 1.0 Production (十月 23, 2010) 20101024022648A</guid></item><item><title>Source code checked in, #52373</title><link>http://bloomfilter.codeplex.com/SourceControl/changeset/changes/52373</link><description>Checked in by server upgrade</description><author>_TFSSERVICE</author><pubDate>Wed, 28 Jul 2010 17:08:20 GMT</pubDate><guid isPermaLink="false">Source code checked in, #52373 20100728050820P</guid></item><item><title>Updated Wiki: Home</title><link>http://bloomfilter.codeplex.com/wikipage?version=4</link><description>&lt;div class="wikidoc"&gt;A  Bloom filter is a data structure optimized for fast, space-efficient set membership tests. Bloom filters have the unusual property of requiring constant time to add an element to the set or test for membership, regardless of the size of the elements or the number of elements already in the set. No other constant-space set data structure has this property. &lt;br /&gt;&lt;br /&gt;It works by storing a bit vector representing the set S&amp;#39; = {h[i](x) | x in S, i = 1, …, k}, where h[1], …, h[k] := {0, 1} -&amp;gt; [n lg(1/ε) lg e] are hash functions. Additions are simply setting k bits to 1, specifically those at h[1](x), …, h[k](x). Checks are implemented by performing those same hash functions and returning if all of the resulting positions are 1. &lt;br /&gt;&lt;br /&gt;Because the set stored is a proper superset of the set of items added, false positives may occur, though false negatives cannot. The false positive rate can be specified. &lt;br /&gt;&lt;br /&gt;Bloom filters offer the following advantages:
&lt;ul&gt;&lt;li&gt;Space: Approximately n * lg(1/ε), where ε is the false positive rate and n is the number of elements in the set. 
&lt;ul&gt;&lt;li&gt;Example: There are approximately 170k words in the English language. If we consider that to be our set (therefore n = 1.7E5), and we wish to search a corpus for them with a 1% false positive rate, the filter would require about (1.7E5 * lg(1 / 0.01)) ≈ 162 KB. Contrast this with a hashtable, which would require (1.7E5 elements * 32 bits per element) ≈ 664 KB. Obviously explicit string storage would be significantly more. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Precision: Arbitrary precision, where increasing precision requires more space (following the above size equation) but not more time. 
&lt;ul&gt;&lt;li&gt;Example: If we wanted to reduce our false positive rate in the above example from one percent to one permille the space requirement would go from about 162 KB to about 207 KB. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Time: O(k) where k is the number of hash functions. The optimal number of hash functions (though a different number can  be supplied by the user if desired) is ceiling(lg(1/ε))
&lt;ul&gt;&lt;li&gt;Example: In keeping with our above example, if the accepted false positive rate is 0.001, k = 10. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;This implementation uses Dillinger &amp;amp; Manolios double hashing to provide all but the first two hash functions. By default the first hash function is the type&amp;#39;s GetHashCode() method. This implementation also includes default secondary hash functions for strings (Jenkin&amp;#39;s &amp;quot;One at a time&amp;quot; method) and integers (Wang&amp;#39;s method). &lt;br /&gt;&lt;br /&gt;Bloom filters are due to Burton H. Bloom, as described in the Communications of the ACM in July 1970. The full paper is available here: &lt;a href="http://portal.acm.org/citation.cfm?doid=362686.362692" class="externalLink"&gt;http://portal.acm.org/citation.cfm?doid=362686.362692&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. &lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>fatcat1111</author><pubDate>Wed, 03 Mar 2010 20:24:55 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20100303082455P</guid></item><item><title>Updated Release: 1.0 Production (Apr 09, 2009)</title><link>http://bloomfilter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25930</link><description>&lt;div class="wikidoc"&gt;&lt;ul&gt;&lt;li&gt;Simplified usage by providing secondary hash functions for strings and ints.&lt;/li&gt;
&lt;li&gt;Added constructors to provide additional control for those that need it.&lt;/li&gt;
&lt;li&gt;Improved calculation of optimal double-hashing function count and underlying data structure size.&lt;/li&gt;
&lt;li&gt;Added a default false-positive rate (calculated based on capacity) for those that do not wish to pass one.&lt;/li&gt;
&lt;li&gt;Now catching when a provided capacity and error rate would result in an overflow.&lt;/li&gt;
&lt;li&gt;Added a readme to explain usage. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>fatcat1111</author><pubDate>Wed, 16 Sep 2009 22:57:48 GMT</pubDate><guid isPermaLink="false">Updated Release: 1.0 Production (Apr 09, 2009) 20090916105748P</guid></item><item><title>Released: 1.0 Production (Apr 09, 2009)</title><link>http://bloomfilter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25930</link><description>&lt;div&gt;&lt;ul&gt;&lt;li&gt;Simplified usage by providing secondary hash functions for strings and ints.&lt;/li&gt;
&lt;li&gt;Added constructors to provide additional control for those that need it.&lt;/li&gt;
&lt;li&gt;Improved calculation of optimal double-hashing function count and underlying data structure size.&lt;/li&gt;
&lt;li&gt;Added a default false-positive rate (calculated based on capacity) for those that do not wish to pass one.&lt;/li&gt;
&lt;li&gt;Now catching when a provided capacity and error rate would result in an overflow.&lt;/li&gt;
&lt;li&gt;Added a readme to explain usage. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;</description><author></author><pubDate>Wed, 16 Sep 2009 22:57:48 GMT</pubDate><guid isPermaLink="false">Released: 1.0 Production (Apr 09, 2009) 20090916105748P</guid></item><item><title>Source code checked in, #34019</title><link>http://bloomfilter.codeplex.com/SourceControl/ListDownloadableCommits.aspx</link><description>Fixing error rate calculation. </description><author>fatcat1111</author><pubDate>Sun, 17 May 2009 18:24:39 GMT</pubDate><guid isPermaLink="false">Source code checked in, #34019 20090517062439P</guid></item><item><title>New Post: bestErrorRate constant</title><link>http://bloomfilter.codeplex.com/Thread/View.aspx?ThreadId=55760</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Great catch! Thank you, this will be corrected immediately.&lt;/p&gt;&lt;/div&gt;</description><author>fatcat1111</author><pubDate>Sun, 17 May 2009 17:17:26 GMT</pubDate><guid isPermaLink="false">New Post: bestErrorRate constant 20090517051726P</guid></item><item><title>New Post: bestErrorRate constant</title><link>http://bloomfilter.codeplex.com/Thread/View.aspx?ThreadId=55760</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Shouldn't the constant be:&lt;/p&gt;
&lt;p&gt;0.6185&lt;/p&gt;
&lt;p&gt;not 0.06185 as it appears in the code base.&lt;/p&gt;
&lt;p&gt;Even the PDF that is in the comments seems to confirm that...&lt;/p&gt;
&lt;pre&gt;             &lt;span style="color:blue"&gt;return&lt;/span&gt; (&lt;span style="color:blue"&gt;float&lt;/span&gt;)Math.Pow(0.06185, &lt;span style="color:blue"&gt;int&lt;/span&gt;.MaxValue / capacity); &lt;span style="color:green"&gt;// http://www.cs.princeton.edu/courses/archive/spring02/cs493/lec7.pdf&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/div&gt;</description><author>torial</author><pubDate>Fri, 08 May 2009 21:19:17 GMT</pubDate><guid isPermaLink="false">New Post: bestErrorRate constant 20090508091917P</guid></item><item><title>Updated Wiki: Home</title><link>http://bloomfilter.codeplex.com/Wiki/View.aspx?title=Home&amp;version=3</link><description>&lt;div class="wikidoc"&gt;A  Bloom filter is a data structure optimized for fast, space-efficient set membership tests. Bloom filters have the unusual property of requiring constant time to add an element to the set or test for membership, regardless of the size of the elements or the number of elements already in the set. No other constant-space set data structure has this property. &lt;br /&gt;&lt;br /&gt;It works by storing a bit vector representing the set S' = {h[i](x) | x in S, i = 1, …, k}, where h[1], …, h[k] := {0, 1} -&amp;gt; [n lg(1/ε) lg e] are hash functions. Additions are simply setting k bits to 1, specifically those at h[1](x), …, h[k](x). Checks are implemented by performing those same hash functions and returning if all of the resulting positions are 1. &lt;br /&gt;&lt;br /&gt;Because the set stored is a proper superset of the set of items added, false positives may occur, though false negatives cannot. The false positive rate can be specified. &lt;br /&gt;&lt;br /&gt;Bloom filters offer the following advantages:&lt;br /&gt;• Space: Approximately n * lg(1/ε), where ε is the false positive rate and n is the number of elements in the set. &lt;br /&gt;	○ Example: There are approximately 170k words in the English language. If we consider that to be our set (therefore n = 1.7E5), and we wish to search a corpus for them with a 1% false positive rate, the filter would require about (1.7E5 * lg(1 / 0.01)) ≈ 162 KB. Contrast this with a hashtable, which would require (1.7E5 elements * 32 bits per element) ≈ 664 KB. Obviously explicit string storage would be significantly more. &lt;br /&gt;• Precision: Arbitrary precision, where increasing precision requires more space (following the above size equation) but not more time. &lt;br /&gt;	○ Example: If we wanted to reduce our false positive rate in the above example from one percent to one permille the space requirement would go from about 162 KB to about 207 KB. &lt;br /&gt;• Time: O(k) where k is the number of hash functions. The optimal number of hash functions (though a different number can  be supplied by the user if desired) is ceiling(lg(1/ε))&lt;br /&gt;	○ Example: In keeping with our above example, if the accepted false positive rate is 0.001, k = 10. &lt;br /&gt;&lt;br /&gt;This implementation uses Dillinger &amp;amp; Manolios double hashing to provide all but the first two hash functions. By default the first hash function is the type's GetHashCode() method. This implementation also includes default secondary hash functions for strings (Jenkin's &amp;quot;One at a time&amp;quot; method) and integers (Wang's method). &lt;br /&gt;&lt;br /&gt;Bloom filters are due to Burton H. Bloom, as described in the Communications of the ACM in July 1970. The full paper is available here: &lt;a href="http://portal.acm.org/citation.cfm?doid=362686.362692" class="externalLink"&gt;http://portal.acm.org/citation.cfm?doid=362686.362692&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. &lt;/div&gt;</description><author>fatcat1111</author><pubDate>Sun, 26 Apr 2009 05:15:37 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090426051537A</guid></item><item><title>Updated Release: 1.0 Production (Apr 09, 2009)</title><link>http://bloomfilter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25930</link><description>&lt;div&gt;&lt;ul&gt;&lt;li&gt;Simplified usage by providing secondary hash functions for strings and ints.&lt;/li&gt;
&lt;li&gt;Added constructors to provide additional control for those that need it.&lt;/li&gt;
&lt;li&gt;Improved calculation of optimal double-hashing function count and underlying data structure size.&lt;/li&gt;
&lt;li&gt;Added a default false-positive rate (calculated based on capacity) for those that do not wish to pass one.&lt;/li&gt;
&lt;li&gt;Now catching when a provided capacity and error rate would result in an overflow.&lt;/li&gt;
&lt;li&gt;Added a readme to explain usage. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description><author>fatcat1111</author><pubDate>Fri, 10 Apr 2009 16:46:27 GMT</pubDate><guid isPermaLink="false">Updated Release: 1.0 Production (Apr 09, 2009) 20090410044627P</guid></item><item><title>Released: 1.0 Production (Apr 09, 2009)</title><link>http://bloomfilter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25930</link><description>&lt;div&gt;&lt;ul&gt;&lt;li&gt;Simplified usage by providing secondary hash functions for strings and ints.&lt;/li&gt;
&lt;li&gt;Added constructors to provide additional control for those that need it.&lt;/li&gt;
&lt;li&gt;Improved calculation of optimal double-hashing function count and underlying data structure size.&lt;/li&gt;
&lt;li&gt;Added a default false-positive rate (calculated based on capacity) for those that do not wish to pass one.&lt;/li&gt;
&lt;li&gt;Now catching when a provided capacity and error rate would result in an overflow.&lt;/li&gt;
&lt;li&gt;Added a readme to explain usage. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description><author></author><pubDate>Fri, 10 Apr 2009 16:46:27 GMT</pubDate><guid isPermaLink="false">Released: 1.0 Production (Apr 09, 2009) 20090410044627P</guid></item><item><title>Source code checked in, #32998</title><link>http://bloomfilter.codeplex.com/SourceControl/ListDownloadableCommits.aspx</link><description>Adding vsmdi. </description><author>fatcat1111</author><pubDate>Fri, 10 Apr 2009 16:41:27 GMT</pubDate><guid isPermaLink="false">Source code checked in, #32998 20090410044127P</guid></item><item><title>Source code checked in, #32997</title><link>http://bloomfilter.codeplex.com/SourceControl/ListDownloadableCommits.aspx</link><description>Update associated with 1.0 release. </description><author>fatcat1111</author><pubDate>Fri, 10 Apr 2009 16:40:29 GMT</pubDate><guid isPermaLink="false">Source code checked in, #32997 20090410044029P</guid></item></channel></rss>