gpt4 book ai didi

java - 如何打印文件中的链接,然后使用它来引用java中另一个文件中的术语

转载 作者:行者123 更新时间:2023-12-01 09:13:04 25 4
gpt4 key购买 nike

  1. 您需要编写一个程序 invert 来进行索引构建。程序的输入是文档集合。输出包括两个文件 - 字典文件和发布列表文件。字典中的每个条目都应包含一个术语、其文档频率以及其发布列表的链接。您应该使用正确的数据结构来构建字典(例如散列或搜索树或其他)。该结构应该易于随机查找和插入新术语。所有术语应按字母顺序排序。每个术语的发帖列表应包括该术语出现的所有文档的发帖(按文档 ID 的顺序),并且发帖中保存的信息包括文档 ID、文档中的术语频率以及该术语在文档中所有出现的位置文档。

我已经创建了这两个文件并读取了每个术语并将它们保存在此 HashMap 中

    private static HashMap<dictionary, List<postings>> index = new HashMap<dictionary , List<postings>>();

我如何创建此链接,因为对于第二个程序,我使用从 invert.java 创建的两个 txt 文件运行它我的dictionary.txt仅包含术语和频率,如何创建此链接?

最佳答案

这几乎是一个数据库风格的问题,其中实体由键表示。因此,对于您创建的用于表示手头项目的每个主要类,请考虑它们的索引是什么。

假设你有类似的东西:

// use Jackson to read/write your data files in Json format
import com.fasterxml.jackson.databind.ObjectMapper;

public class Inverter {
private JsonFileWriter fileWriter;

/*
* Don't use HashMap since it isn't sorted
*/
Map<String, TermMetadata> dictionary = new HashMap<>();

public List<File> invert(final Collection<Document> documents) {
}

public void writeDictionation() {
fileWriter.write(dictionary);
}

public void writePostings() {
fileWriter.write(postings);
}
}

public class Document {
/**
* Index is the documentId
*/
int documentId;

// other attributes ...
}

public class TermMetadata {
/*
* Index on the term
*/
String term;
int documentFrequency;
List<int> postingsIds;
}

public class Posting {
/**
* Index on the posting id
*/
int postingId;
int documentId;
int termFrequency;
List<int> positions;
}

然后,无论您从文本文件中读回值,都可以加入索引。

所以,List<int> postingIdsTermMetadata将用于指代帖子,其 postingId关键。

我认为理想情况下,这将作为数据库的 Java 前端来实现。但是,由于您使用的是文件,因此我建议使用一些标准序列化机制(例如 Json)来存储对象表示。

使用 jackson ObjectMapper ,当你去阅读帖子文件时,你会看到一个很大的列表 Posting对象并可以调用 getPostingId()然后将其与 TermMetadata 中的信息结合起来的List<int>发布 ID`。

关于java - 如何打印文件中的链接,然后使用它来引用java中另一个文件中的术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40795922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com