PostgreSQL-%和<%>是什么意思?

时间:2020-02-17 12:24:19

标签: postgresql

我正在尝试在Postgresql上探索RDkit墨盒。我已经在PostgreSQL上安装了RDkit,现在正尝试浏览http://rdkit.org/docs_temp/Cartridge.html上的文档。在这里,当试图了解相似性搜索时,我遇到了以下代码。但是我对Postgresql和RDkit都是陌生的,因此无法完全理解它。

chembl_23=# create or replace function get_mfp2_neighbors(smiles text)
    returns table(molregno integer, m mol, similarity double precision) as
  $$
  select molregno,m,tanimoto_sml(morganbv_fp(mol_from_smiles($1::cstring)),mfp2) as similarity
  from rdk.fps join rdk.mols using (molregno)
  where morganbv_fp(mol_from_smiles($1::cstring))%mfp2
  order by morganbv_fp(mol_from_smiles($1::cstring))<%>mfp2;
  $$ language sql stable ;

我的问题是-

1)%mfp2在WHERE子句中是什么意思? -我在Google上搜索时,偶然发现了提到它在SQL中像%%运算符的页面。但是这里不使用LIKE运算符,含义还是一样吗?

2)<%> mfp2在ORDER BY子句中是什么意思? -我对这个运算符一无所知。

有人可以帮助我理解这一点吗?

1 个答案:

答案 0 :(得分:2)

这些运算符是由RDkit定义的,它们对PostgreSQL本身没有固有的意义(使用的是数据类型)。您会在链接到该页面的RDkit上下文中找到记录的文档。其他扩展名的运算符具有相同的“拼写”(但参数类型不同)但以其他方式使用。

%:用于使用Tanimoto相似度进行相似度搜索的运算符。 返回两个之间的Tanimoto相似性 指纹(两个sfp或两个bfp值)超过 rdkit.tanimoto_threshold。

<%>: 用于谷本KNN搜索(返回邻居的有序列表)。

mfp2是一列的名称,因此%mfp2将更清楚地写有空格someconstant % mfp2