我很难为下面的任务构建一个倒排索引
假设您有以下数组或行列表(我是从文件中导入它们的!):
0: Katie Jacobs
1: Erick Harrington harrington@gmail.com
2: Myrtle Medina
3: Erick Burgess对于这些行,倒排索引将如下所示:
Katie -> [0]
Jacobs -> [0]
Erick -> [1, 3]
Harrington -> [1]
harrington@gmail.com -> [1]
Myrtle -> [2]
Medina -> [2]
Burgess -> [3]配对的顺序并不重要。如果您正在搜索Erick,您可以使用此映射立即获得目标字段。
后面的输出示例:
Enter a name or email to search all suitable people.
> ERICK
2 persons found:
Erick Harrington harrington@gmail.com
Erick Burgess我使用了以下代码,但我不太确定如何将单词映射到相应的行号,以便稍后可以搜索它,或者我甚至不确定我是否在正确的方向上。
val invertedIndex = mutableMapOf<List<String>, Int>()
fun main(args: Array<String>) {
if (args[0] == "--data") {
File(args[1]).forEachLine { line ->
for (word in line.split(" ")) {
To Do???
}
}
}
else println("Invalid input")
}发布于 2020-09-28 22:01:37
val map = File("input.txt").useLines { lines ->
lines.filter { it.isNotBlank() }
.flatMapIndexed { index, value ->
value.splitToSequence(" ")
.filter { it.isNotBlank() }
.map { index to it }
}
.groupBy({ (_, name) -> name }, { (index, _) -> index })
}
println(map)发布于 2020-09-29 07:14:02
你需要计算出你的循环需要采取的基本步骤。先别担心代码,你能用英语解释一下吗?你需要为每一行做什么?您需要将哪些数据放入该地图中,以及从哪里获取这些数据?你如何存储它,你需要做什么检查?一步一步地找出你需要做的事情。
再看看你的invertedIndex地图,你确定签名是正确的吗?它是否描述了您存储的数据的结构方式?看看你的索引示例,每一行是什么样子的?
我不是为你做作业,但我可以给你一些提示!解决这些问题的方法实际上是编码,而编写代码部分则是次要的
https://stackoverflow.com/questions/64103220
复制相似问题