如何使用Postgresql全文搜索模拟Solr"更像这个查询"?

dan*_*dan 5 postgresql solr

我想模仿这种类型的Solr查询:

http://wiki.apache.org/solr/MoreLikeThis

PostgreSQL使用其全文搜索工具.

有没有办法用纯粹的postgres做一个像"更像这样"的查询?

Chr*_*ers 2

恐怕不是开箱即用的。可以比较两个 tsvector 以确定它们是否足够相似,或者提取前 n 个相似的 tsvector,但没有现成的功能可以执行此操作。好消息是,由于 tsvectors 支持 GIN 索引,因此复杂的部分已经为您完成。

我认为你需要做的是在 C 中创建一个函数来确定两个 tsvector 的交集。从那里您可以创建一个函数来确定它们是否重叠,并创建一个运算符来解决这个问题。从那里开始,根据最大重叠创建排名应该不会太难。

当然,我怀疑这在 C 等语言中是最容易做到的,但如果需要,您也可以使用其他过程语言。

PostgreSQL 的美妙之处在于一切皆有可能。当然,缺点是当你远离核心功能时,你需要自己做很多事情。