该楼层疑似违规已被系统折叠隐藏此楼查看此楼
package com;
public class Test {
public static void main(String[] args) {
String[] books = { "应用线性代数", "初等线性代数", "初等线性代数及其应用", "线性代数及其应用", "线性代数及应用", "矩阵代数及应用", "矩阵理论" };
String[] keywords = { "初等", "代数", "矩阵", "理论", "线性", "应用" };
int len1 = books.length;
int len2 = keywords.length;
Integer[][] data = new Integer[len1][len2];
// 将书名与关键词做成数据库矩阵
for (int i = 0; i < len2; i++) {
String keyword = keywords[i];
for (int j = 0; j < len1; j++) {
String book = books[j];
if (book.indexOf(keyword) >= 0) {
data[j][i] = 1;
} else {
data[j][i] = 0;
}
}
}
// 输入关键词,用,号隔开
String inputKeyword = "矩阵,应用";
System.out.println("输入关键词:" + inputKeyword);
String[] inputKeywords = inputKeyword.split(",");
Integer[] vector = new Integer[len2];
// 将关键词转换成搜索向量
for (int i = 0; i < len2; i++) {
boolean isHave = false;
for (String str : inputKeywords) {
if (str.equals(keywords[i])) {
isHave = true;
}
}
vector[i] = isHave ? 1 : 0;
}
// 将搜索向量与数据库相匹配
Integer[] result = new Integer[len1];
int dataRow = data.length;
for (int i = 0; i < dataRow; i++) {
result[i] = 0;
for (int j = 0; j < len2; j++) {
result[i] += data[i][j] * vector[j];
}
}
System.out.println("搜索结果:");
System.out.println("------------");
for (int i = 0; i < result.length; i++) {
if (result[i] == 1) {
System.out.println(books[i]);
}
}
}
}