On Mon, Oct 30, 2017 at 2:07 PM, Oleg Bartunov <obartu...@gmail.com> wrote:
> On Mon, Oct 30, 2017 at 12:05 PM, Oleg Bartunov <obartu...@gmail.com> > wrote: > > On Sun, Oct 29, 2017 at 10:07 AM, Connor Wolf > > <w...@imaginaryindustries.com> wrote: > >> Hi there! > >> > >> I'm looking at implementing a custom indexing scheme, and I've been > having > >> trouble understanding the proper approach. > >> > >> Basically, I need a BK tree, which is a tree-structure useful for > indexing > >> arbitrary discrete metric-spaces (in my case, I'm interested in indexing > >> across the hamming edit-distance of perceptual hashes, for fuzzy image > >> searching). I'm pretty sure a SP-GiST index is the correct index type, > as my > >> tree is intrinsically unbalanced. > >> > >> I have a functional stand-alone implementation of a BK-Tree, and it > works > >> very well, but the complexity of managing what is basically a external > index > >> for my database has reached the point where it's significantly > problematic, > >> and it seems to be it should be moved into the database. > >> > >> Anyways, looking at the contents of postgres/src/backend/access/spgist, > it > >> looks pretty straightforward in terms of the actual C implementation, > but > >> I'm stuck understanding how to "install" a custom SP-GiST > implementation. > >> There are several GiST indexing implementations in the contrib > directory, > >> but no examples for how I'd go about implementing a loadable SP-GiST > index. > >> > >> Basically, my questions are: > >> > >> Is it possible to implement a SP-GiST indexing scheme as a loadable > module? > >> > >> If so, how? > >> And is there an example I can base my implementation off of? > > > > Look on RUM access method ( https://github.com/postgrespro/rum ) we > > developed using > > api available since 9.6. > > or even simple, there is contrib/bloom access method, which illustrates > developing access method as an extension. I think Connor struggles to implement just an operator class. Advising him to implement an index access method is a good way to get him away of PostgreSQL hacking for a long time :) ------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company