【问题标题】:How do I create a TreeMap to store a keyword with its count and it's document id如何创建 TreeMap 来存储关键字及其计数和文档 ID
【发布时间】:2016-01-20 08:09:09
【问题描述】:

我计划存储来自 wiki 转储的关键字。如何创建 TreeMap 来存储关键字及其计数和找到它的文档 ID。另外,我想存储是否找到正文、信息框、参考部分等。

我无法为其提供正确的数据结构。

【问题讨论】:

  • 请评论,如果我不能清楚地提出我的问题,而不是正确地投反对票。
  • "存储一个关键字及其计数和找到它的文档ID" 好吧,假设一个关键字可能存在于多个文档中,所以存储计数(跨文档)并且(唯一的)文档ID是完全不可能的。请准确说明您想要什么,先对自己说清楚,如果您仍然无法弄清楚,再向我们说明。
  • 每个文档的计数。 Like 关键字后跟文档 ID 和在页面各个部分中找到的计数。

标签: java performance processing-efficiency


【解决方案1】:

理论上你可以使用多个TreeMaps,但似乎有一个专用的值类会是更好的解决方案。类似的东西

public class KeyWordInfo {
    public enum Location {BODY, INFO_BOX; REF_SECTION};
    private int count = 0;
    private String documentId;
    private Set<Location> locations;
    public KeyWordInfo(int count, String documentId, Location... locations) {
        this.count = count;
        this.documentId = documentId;
        this.locations = EnumSet.of(locations);
    }
    //...getters, maybe setters
}

//usage
Map<String, KeyWordInfo> keyWordMap = new TreeMap<>();
keyWordMap.put("test", new KeyWordInfo(42,"doc0815",BODY,INFO_BOX));

【讨论】:

    【解决方案2】:

    如果我理解正确,您想创建一个地图来存储有关关键字的信息。 首先,您可以创建一个以字符串为键、任何对象类型为值的映射:

    Map<String, Object> myMap = new TreeMap<String, Object>();
    myMap.put("myKey", new Object());
    

    然后,如果需要,您可以将值类型“Object”更改为您可以定义的新类,其中包含您需要作为成员的所有值(计数、documentId、locationFound 等...)

    那么你的地图声明将是:

    int count = 1;
    String documentId = "myDocId";
    String locationFound = "body";
    Map<String, MyClass> myMap = new TreeMap<String, MyClass>();
    myMap.put("myKey", new MyClass(count, documentId, locationFound));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-23
      • 2015-06-07
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多