功能介绍

近似向量连接采用LSH算法返回左表和右表中距离低于阈值的向量对。

参数说明

名称 中文名称 描述 类型 是否必须? 默认值
distanceType 距离度量方式 聚类使用的距离类型,支持EUCLIDEAN 和 JACCARD String “EUCLIDEAN”
distanceThreshold 距离阈值 距离阈值 Double 1.7976931348623157E308
leftCol 左表文本列名 左表文本列名 String
rightCol 右表文本列名 右表文本列名 String
outputCol 输出结果列列名 输出结果列列名,必选 String
leftIdCol 左侧ID列 左侧ID列 String
rightIdCol 右侧ID列 右侧ID列 String
projectionWidth 桶的宽度 桶的宽度 Double 1.0
numHashTables 哈希表的数目 哈希表的数目 Integer 1
selectedCol 选中的列名 计算列对应的列名 String
numProjectionsPerTable 每个哈希表中的哈希函数个数 每个哈希表中的哈希函数个数 Integer 1
seed 采样种子 采样种子 Long 0

脚本示例

脚本代码

  1. # -*- coding=UTF-8 -*-
  2. import numpy as np
  3. import pandas as pd
  4. data = np.array([
  5. [0, "0 0 0"],
  6. [1, "1 1 1"],
  7. [2, "2 2 2"]
  8. ])
  9. df = pd.DataFrame({"id": data[:, 0], "vec": data[:, 1]})
  10. source = BatchOperator.fromDataframe(df, schemaStr='id int, vec string')
  11. op = (
  12. ApproxVectorSimilarityJoinLSHBatchOp()
  13. .setLeftIdCol("id")
  14. .setRightIdCol("id")
  15. .setLeftCol("vec")
  16. .setRightCol("vec")
  17. .setOutputCol("output")
  18. .setDistanceThreshold(2.0))
  19. op.linkFrom(source, source).collectToDataframe()

脚本运行结果

输出数据
  1. rowID id_left id_right output
  2. 0 0 0 0.0
  3. 1 1 1 0.0
  4. 2 2 2 0.0