1

我想将我的文本哈希函数带入 GIN 索引器。

请参阅下面的可扩展性:

http://www.postgresql.org/docs/9.0/static/gin-extensibility.html

我可以理解compare

int compare(Datum a, Datum b)

但是extractValueextractQuerycontrast怎么样。

Datum *extractValue(Datum inputValue, int32 *nkeys)

Datum *extractQuery(Datum query, int32 *nkeys, StrategyNumber n, bool **pmatch, Pointer **extra_data)

bool consistent(bool check[], StrategyNumber n, Datum query, int32 nkeys, Pointer extra_data[], bool *recheck)

该手册并不能帮助我实现它们。

我知道如何实现它们。详细地:

  • 什么传递给extractValueinputValue
  • extractValue返回什么?
  • 什么传递给extractQuery查询
  • extractQuery返回什么?
  • 传递给一致查询的是什么?
  • 通过什么检查一致?

索引存储(散列键)将为int4。输入类型是text

4

1 回答 1

1

您是否阅读了所有文档?你知道反向索引是做什么的吗?我无法完全回答您的问题,因为您尚未指定查询的内容。但这是一个尝试(基于http://www.postgresql.org/docs/9.2/static/gin-extensibility.htmlhttp://www.sai.msu.su/~megera/wiki/上的信息杜松子酒)。另外,请查看 tsearch 示例。

输入compare是两个键值,所以是两个整数。

输入extractValue是您的输入类型,文本。输出是一个键数组:在你的情况下显然是一个整数数组。

extractQuery获取您的查询类型作为输入,它可能是一个字符串(您未指定)并返回您希望系统为其查找匹配项的有趣键的列表。它还可以返回该consistant方法的额外信息。

系统根据您返回的内容找到感兴趣的值后extractQuery,此方法将返回该值是否与查询实际匹配。

由于您尚未指定查询类型,因此我将举一个全文搜索的示例。例如,查询类型是像“foo and bar”这样的字符串,这将返回键“foo”和“bar”以及一些数据,因此consistant函数知道这两个术语都必须存在。

但实际上,这一切都在上述页面中进行了描述。

于 2013-07-07T09:18:41.927 回答