java 查询数据相似度排行案例
时间: 2024-02-21 22:56:44 浏览: 109
查询数据相似度排行可以使用余弦相似度算法,以下是一个 Java 的案例:
```java
import java.util.HashMap;
import java.util.Map;
public class SimilarityRanking {
// 计算余弦相似度
public static double cosineSimilarity(Map<String, Double> vector1, Map<String, Double> vector2) {
double dotProduct = 0.0;
double norm1 = 0.0;
double norm2 = 0.0;
for (String key : vector1.keySet()) {
if (vector2.containsKey(key)) {
dotProduct += vector1.get(key) * vector2.get(key);
}
norm1 += Math.pow(vector1.get(key), 2);
}
for (String key : vector2.keySet()) {
norm2 += Math.pow(vector2.get(key), 2);
}
return dotProduct / (Math.sqrt(norm1) * Math.sqrt(norm2));
}
public static void main(String[] args) {
Map<String, Double> vector1 = new HashMap<>();
vector1.put("apple", 2.0);
vector1.put("banana", 1.0);
vector1.put("orange", 3.0);
Map<String, Double> vector2 = new HashMap<>();
vector2.put("apple", 3.0);
vector2.put("banana", 1.0);
vector2.put("pear", 2.0);
double similarity = cosineSimilarity(vector1, vector2);
System.out.println("Similarity: " + similarity);
}
}
```
以上代码中,我们定义了一个 `cosineSimilarity` 方法,用于计算两个向量的余弦相似度。然后我们传入两个 Map 类型的向量,分别表示两个数据的属性和属性值。最后输出它们的相似度即可。
阅读全文