首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建倒排索引

构建倒排索引
EN

Stack Overflow用户
提问于 2020-09-28 21:33:15
回答 2查看 58关注 0票数 0

我很难为下面的任务构建一个倒排索引

假设您有以下数组或行列表(我是从文件中导入它们的!):

代码语言:javascript
复制
0: Katie Jacobs
1: Erick Harrington harrington@gmail.com
2: Myrtle Medina
3: Erick Burgess

对于这些行,倒排索引将如下所示:

代码语言:javascript
复制
Katie -> [0]
Jacobs -> [0]
Erick -> [1, 3]
Harrington -> [1]
harrington@gmail.com -> [1]
Myrtle -> [2]
Medina -> [2]
Burgess -> [3]

配对的顺序并不重要。如果您正在搜索Erick,您可以使用此映射立即获得目标字段。

后面的输出示例:

代码语言:javascript
复制
Enter a name or email to search all suitable people.
> ERICK
2 persons found:
Erick Harrington harrington@gmail.com
Erick Burgess

我使用了以下代码,但我不太确定如何将单词映射到相应的行号,以便稍后可以搜索它,或者我甚至不确定我是否在正确的方向上。

代码语言:javascript
复制
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")
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-28 22:01:37

代码语言:javascript
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2020-09-29 07:14:02

你需要计算出你的循环需要采取的基本步骤。先别担心代码,你能用英语解释一下吗?你需要为每一行做什么?您需要将哪些数据放入该地图中,以及从哪里获取这些数据?你如何存储它,你需要做什么检查?一步一步地找出你需要做的事情。

再看看你的invertedIndex地图,你确定签名是正确的吗?它是否描述了您存储的数据的结构方式?看看你的索引示例,每一行是什么样子的?

我不是为你做作业,但我可以给你一些提示!解决这些问题的方法实际上是编码,而编写代码部分则是次要的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64103220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档