88 </indexterm>
99
1010 <para>
11- <literal>bloom</> is a contrib which implements index access method. It comes
12- as example of custom access methods and generic WAL records usage. But it
13- is also useful itself.
11+ <literal>bloom</> is a module which implements an index access method. It comes
12+ as an example of custom access methods and generic WAL records usage. But it
13+ is also useful in itself.
1414 </para>
1515
1616 <sect2>
1717 <title>Introduction</title>
1818
1919 <para>
20- Implementation of
20+ The implementation of a
2121 <ulink url="http://en.wikipedia.org/wiki/Bloom_filter">Bloom filter</ulink>
22- allows fast exclusion of non-candidate tuples.
23- Since signature is a lossy representation of all indexed attributes,
24- search results should be rechecked using heap information.
25- User can specify signature length (in uint16, default is 5) and the number of
26- bits, which can be setted, per attribute (1 < colN < 2048).
22+ allows fast exclusion of non-candidate tuples via signatures .
23+ Since a signature is a lossy representation of all indexed attributes,
24+ search results must be rechecked using heap information.
25+ The user can specify signature length (in uint16, default is 5) and the
26+ number of bits, which can be set per attribute (1 < colN < 2048).
2727 </para>
2828
2929 <para>
30- This index is useful if table has many attributes and queries can include
31- their arbitary combinations. Traditional <literal>btree</> index is faster
32- than bloom index, but it'd require too many indexes to support all possible
33- queries, while one need only one bloom index. Bloom index supports only
34- equality comparison. Since it's a signature file, not a tree, it always
35- should be readed fully, but sequentially, so index search performance is
36- constant and doesn't depend on a query.
30+ This index is useful if a table has many attributes and queries include
31+ arbitrary combinations of them . A traditional <literal>btree</> index is
32+ faster than a bloom index, but it can require many indexes to support all
33+ possible queries where one needs only a single bloom index. A Bloom index
34+ supports only equality comparison. Since it's a signature file, and not a
35+ tree, it always must be read fully, but sequentially, so that index search
36+ performance is constant and doesn't depend on a query.
3737 </para>
3838 </sect2>
3939
4040 <sect2>
4141 <title>Parameters</title>
4242
4343 <para>
44- <literal>bloom</> indexes accept following parameters in <literal>WITH</>
44+ <literal>bloom</> indexes accept the following parameters in the
45+ <literal>WITH</>
4546 clause.
4647 </para>
4748
7172 <title>Examples</title>
7273
7374 <para>
74- Example of index definition is given below.
75+ An example of an index definition is given below.
7576 </para>
7677
7778<programlisting>
@@ -80,12 +81,12 @@ CREATE INDEX bloomidx ON tbloom(i1,i2,i3)
8081</programlisting>
8182
8283 <para>
83- Here, we create bloom index with signature length 80 bits and attributes
84- i1, i2 mapped to 2 bits, attribute i3 - to 4 bits.
84+ Here, we created a bloom index with a signature length of 80 bits,
85+ and attributes i1 and i2 mapped to 2 bits, and attribute i3 to 4 bits.
8586 </para>
8687
8788 <para>
88- Example of index definition and usage is given below.
89+ Here is a fuller example of index definition and usage:
8990 </para>
9091
9192<programlisting>
@@ -142,7 +143,7 @@ SELECT pg_relation_size('btree_idx');
142143</programlisting>
143144
144145 <para>
145- Btree index will be not used for this query.
146+ A btree index will be not used for this query.
146147 </para>
147148
148149<programlisting>
@@ -162,10 +163,10 @@ SELECT pg_relation_size('btree_idx');
162163 <title>Opclass interface</title>
163164
164165 <para>
165- Bloom opclass interface is simple. It requires 1 supporting function:
166- hash function for indexing datatype. And it provides 1 search operator:
167- equality operator. The example below shows <literal>opclass</> definition
168- for <literal>text</> datatype.
166+ The Bloom opclass interface is simple. It requires 1 supporting function:
167+ a hash function for the indexing datatype. It provides 1 search operator:
168+ the equality operator. The example below shows <literal>opclass</>
169+ definition for <literal>text</> datatype.
169170 </para>
170171
171172<programlisting>
@@ -183,16 +184,16 @@ DEFAULT FOR TYPE text USING bloom AS
183184 <itemizedlist>
184185 <listitem>
185186 <para>
186- For now, only opclasses for <literal>int4</>, <literal>text</> comes
187- with contrib . However, users may define more of them.
187+ For now, only opclasses for <literal>int4</>, <literal>text</> come
188+ with the module . However, users may define more of them.
188189 </para>
189190 </listitem>
190191
191192 <listitem>
192193 <para>
193- Only <literal>=</literal> operator is supported for search now. But it's
194- possible to add support of arrays with contains and intersection
195- operations in future.
194+ Only the <literal>=</literal> operator is supported for search at the
195+ moment. But it's possible to add support for arrays with contains and
196+ intersection operations in the future.
196197 </para>
197198 </listitem>
198199 </itemizedlist>
@@ -203,15 +204,18 @@ DEFAULT FOR TYPE text USING bloom AS
203204 <title>Authors</title>
204205
205206 <para>
206- Teodor Sigaev <email>teodor@postgrespro.ru</email>, Postgres Professional, Moscow, Russia
207+ Teodor Sigaev <email>teodor@postgrespro.ru</email>,
208+ Postgres Professional, Moscow, Russia
207209 </para>
208210
209211 <para>
210- Alexander Korotkov <email>a.korotkov@postgrespro.ru</email>, Postgres Professional, Moscow, Russia
212+ Alexander Korotkov <email>a.korotkov@postgrespro.ru</email>,
213+ Postgres Professional, Moscow, Russia
211214 </para>
212215
213216 <para>
214- Oleg Bartunov <email>obartunov@postgrespro.ru</email>, Postgres Professional, Moscow, Russia
217+ Oleg Bartunov <email>obartunov@postgrespro.ru</email>,
218+ Postgres Professional, Moscow, Russia
215219 </para>
216220 </sect2>
217221
0 commit comments